Content.Load() 不会创建新实例

本文关键字:创建 新实例 实例 Texture2D Load Content | 更新日期: 2023-09-27 18:30:46

我有这个结构:

public struct LevelElements
{
    public Texture2D levelTexture;
    // other variables...
}

我以这种方式初始化它:

for (int i = 0; i < 2; i++)
    levelElements[i] = new LevelElements
    {
        levelTexture = content.Load<Texture2D>("Terrain/level"),
        // other variables...
    }

然后我绘制第一个纹理,同时使用textureLevel.SetData方法对其进行修改。
问题是,如果我绘制第二个,它看起来与修改后的第一个相同,而不是从内容加载的原始内容。
为什么两个levelTexture具有相同的引用?Content.Load<Texture2D>()不创建新实例吗?

PS:我不需要创建该纹理的副本,我只是在测试我的代码,我发现了这种行为。

Content.Load<Texture2D>() 不会创建新实例

我以前没有使用过它,但在我看来,您希望像这样声明它以将其用作实例变量:

Texture2D texture = new Texture2D( resourceDevice, image.PixelWidth, image.PixelHeight, false, SurfaceFormat.Color);

继续阅读:来自 MSDN