我正在尝试使用访问器,因为在我看来这是完成我想做的事情的唯一方法。这是我的代码:
游戏1.cs
public class GroundTexture
{
private Texture2D dirt;
public Texture2D Dirt
{
get
{
return dirt;
}
set
{
dirt = value;
}
}
}
public class Main : Game
{
public static Texture2D texture = tile.Texture;
GroundTexture groundTexture = new GroundTexture();
public static Texture2D dirt;
protected override void LoadContent()
{
Tile tile = (Tile)currentLevel.GetTile(20, 20);
dirt = Content.Load<Texture2D>("Dirt");
groundTexture.Dirt = dirt;
Texture2D texture = tile.Texture;
}
protected override void Update(GameTime gameTime)
{
if (texture == groundTexture.Dirt)
{
player.TileCollision(groundBounds);
}
base.Update(gameTime);
}
}
我从 LoadContent 和 Update 函数中删除了不相关的信息。
在以下行:
if (texture == groundTexture.Dirt)
我收到错误
Operator '==' cannot be applied to operands of type 'Microsoft.Xna.Framework.Graphics.Texture2D' and 'Game1.GroundTexture'
我是否正确使用了访问器?为什么我会收到这个错误?“污垢”是 Texture2D,因此它们应该具有可比性。
这使用了一个名为 Realm Factory 的程序中的一些功能,该程序是一个磁贴编辑器。数字“20, 20”只是我在下面制作的关卡的一个示例:
http://i.stack.imgur.com/d8cO3.png
tile.Texture 返回精灵,这里是内容项 Dirt.png
非常感谢!