使用texture2d变量初始化非静态类
本文关键字:静态类 初始化 变量 texture2d 使用 | 更新日期: 2023-09-27 18:09:08
我正在学习XNA(和一般的c#),当我试图为学习目的编写我自己的小侧边卷轴时,我偶然发现了以下问题。
关卡是由贴图构建的,因为我不想在每次实例化(如return new Tile(positionVector2, TEXTURE)
)时都将纹理传递给贴图,所以类应该默认使用此纹理构建。
现在我不能让它工作,我试着使用这样的构造函数:
public Tile(Vector2 position)
{
this.texture = Platformer03.Texture;
}
其中Platformer03
是游戏类,Texture是加载贴图纹理的属性。现在,由于Platformer03
是类而不是实例(它不是静态的),这显然是行不通的,但我甚至找不到Platformer03
的实例(它被称为game1,但超出了范围)。
所以我确信我做的这一切都错了,但我怎么能让Tile类在每个实例化上使用一个特定的texture2d ?
请温柔一点,即使你可能无法想象一个更愚蠢的问题,我可以向你保证,我已经像疯子一样在过去的几个小时里谷歌和阅读了这个问题。
如果您将Platformer03
下的Texture
变量变为static
变量,则无需Platformer03
类本身的实例就可以访问它(前提是它没有标记为私有或受保护)。
如果您找不到Platformer03
类,也许您没有在正确的名称空间中查找?
我不确定我理解你的问题,但如果在你的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;
}
}
抱歉我的英语不好