0

我正在学习 XNA(和一般的 C#),并且在尝试编写自己的小横向卷轴以用于学习目的时,我偶然发现了以下问题。

该级别是从瓷砖构建的,并且由于我不想在每次实例化时将纹理传递给瓷砖(例如return new Tile(positionVector2, TEXTURE)),因此默认情况下应该使用此纹理构造类。

现在我无法让它工作,我尝试使用这样的构造函数:

public Tile(Vector2 position)
{
   this.texture = Platformer03.Texture;  
}

游戏类在哪里Platformer03,Texture 是加载的平铺纹理的属性。现在因为Platformer03是类而不是实例(它不是静态的),这显然不起作用,但我什至找不到Platformer03(它称为game1,但超出范围)的实例。

所以我确定我做错了,但是我怎样才能让 Tile 类在每个实例化时使用某个 texture2d 呢?

请温柔一点,即使您可能无法想象一个更白痴的问题,我可以向您保证,在过去的几个小时里,我已经像疯子一样在谷歌上搜索和阅读来解决这个问题。

4

2 回答 2

1

如果您将Texture变量Platformer03设置为static变量,那么它可以在没有Platformer03类本身的实例的情况下访问(前提是它没有标记为私有或受保护)。

如果您找不到Platformer03该类,也许您没有在正确的命名空间中查找?

于 2013-04-15T11:43:13.867 回答
1

我不确定我是否理解你的问题,但是如果在你的Platformer03构造函数中你已经在加载想要的纹理,你可以实例化一个新的Platformer03并得到它。像这样:

public Tile(Vector2 position)
{
    Texture = new Platformer03().Texture;
}

或者如果在你的所有不同对象中Plataformer03只使用一个值,你可以在非静态类中有一个静态成员,如下所示:TexturePlatformer03

class Platformer03
{
    public static Texture2D Texture = ... ;
}
class Tile
{
    public Tile(Vector2 position)
    {
        this.texture = Platformer03.Texture;
    }
}

对不起我的英语。

于 2013-04-15T12:13:56.697 回答