1

我正在尝试使用访问器,因为在我看来这是完成我想做的事情的唯一方法。这是我的代码:

游戏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

非常感谢!

4

0 回答 0