我正在学习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搜索并像疯子一样阅读。
答案 0 :(得分:1)
如果您将Texture
下的Platformer03
变量变为static
变量,那么无需Platformer03
类本身的实例即可访问该变量(前提是它不是标记为私人或受保护的。)
如果找不到Platformer03
类,也许你没有找到正确的命名空间?
答案 1 :(得分:1)
我不确定我理解你的问题,但是如果在你的Platformer03
构造函数中你已经加载了想要的纹理,你可以实例化一个新的Platformer03
并获得它。
像这样:
public Tile(Vector2 position)
{
Texture = new Platformer03().Texture;
}
或者如果在Plataformer03
中Texture
中只有Platformer03
中的一个值用于class Platformer03
{
public static Texture2D Texture = ... ;
}
class Tile
{
public Tile(Vector2 position)
{
this.texture = Platformer03.Texture;
}
}
的所有差异对象,则可以在非静态类中包含静态成员,如下所示:
{{1}}
抱歉我的英文。