使用texture2d变量初始化非静态类

时间:2013-04-15 11:36:39

标签: c# constructor initialization xna-4.0 texture2d

我正在学习XNA(以及一般的C#),在尝试编写自己的小方法用于学习目的时,我偶然发现了以下问题。

级别是从tile构建的,因为我不希望在每个实例化时将纹理传递给tile(如return new Tile(positionVector2, TEXTURE)),所以默认情况下应该使用此纹理构造类。

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

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

其中Platformer03是游戏类,并为加载的tile-texture构造属性。 既然Platformer03是类而不是实例(它不是静态的),这显然是行不通的,但是我甚至找不到Platformer03的实例(它叫做game1,但是出来了)范围)。

所以我确定我做错了,但是如何在每次实例化时让Tile类使用某个texture2d?

请保持温和,即使你可能无法想象一个更愚蠢的问题,我可以向你保证,在过去的几个小时里,我用Google搜索并像疯子一样阅读。

2 个答案:

答案 0 :(得分:1)

如果您将Texture下的Platformer03变量变为static变量,那么无需Platformer03类本身的实例即可访问该变量(前提是它不是标记为私人或受保护的。)

如果找不到Platformer03类,也许你没有找到正确的命名空间?

答案 1 :(得分:1)

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

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

或者如果在Plataformer03Texture中只有Platformer03中的一个值用于class Platformer03 { public static Texture2D Texture = ... ; } class Tile { public Tile(Vector2 position) { this.texture = Platformer03.Texture; } } 的所有差异对象,则可以在非静态类中包含静态成员,如下所示:

{{1}}

抱歉我的英文。