我有这个结构:
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:我不需要创建该纹理的副本,我只是测试我的代码而且我发现了这种行为。
答案 0 :(得分:1)
我之前没有使用它,但在我看来,你想要将它声明为这样,以便将它用作实例变量:
Texture2D texture = new Texture2D(
resourceDevice,
image.PixelWidth,
image.PixelHeight,
false,
SurfaceFormat.Color);
read on:来自msdn