使用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 ?

请温柔一点,即使你可能无法想象一个更愚蠢的问题,我可以向你保证,我已经像疯子一样在过去的几个小时里谷歌和阅读了这个问题。

使用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;
    }
}

抱歉我的英语不好