我正在尝试使用访问器,因为在我看来,这是实现我想要做的唯一方法。这是我的代码:
Game1.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的程序中的一些函数,它是一个tile编辑器。数字“20,20”只是我在下面所做的级别的样本:
http://i.stack.imgur.com/d8cO3.png
tile.Texture返回精灵,这里是内容项Dirt.png
非常感谢!