我有一个奇怪的问题,我认为我对 XNA 框架的知识相对缺乏,这使我无法修复。
基本上,我有一个 Texture2D 引用,它设置为 Texture2D 的一个新实例。在运行期间,它的一些像素被设置,这一切都很好地工作,因为它在游戏循环中绘制。
奇怪的是,如果我将引用设置为 null,(它只会在不为 null 的情况下绘制)它不会按预期绘制。
稍后,我将引用设置为新的 Texture2D 并开始将其绘制到屏幕上。问题是它保存了原始 Texture2D 对象的所有数据。
编辑
对不起,我之前没有说清楚。
我所拥有的是这样的......
private Texture2D WorkingTexture {get; set; }
private void Update()
{
if(some input)
{
this.WorkingTexture = null;
}
if(some other input)
{
this.WorkingTexture = new Texture2D(this.GraphicsDevice, 500, 500, true, SurfaceFormat.Color);
this.WorkingTexture.SetData<Color>(0, new Rectangle((int)vector2.X, (int)vector2.Y, 4, 4), colors, 0, 16);
}
}
private void Draw()
{
if (this.WorkingTexture != null)
{
spritebatch.draw(this.WorkingTexture,.....);
}
}
第二次编辑
我还设置了一个 for 循环,并在创建纹理后手动将纹理的每个像素设置为一种颜色。这可行,但它仍将像素显示为我之前设置的颜色。这很奇怪。
请忽略此线程。这个问题非常尴尬是我自己做的。我有一些代码可以缓冲要更改的像素,是的……您猜对了,我没有清除它,它正在新的纹理实例上重新进行工作。
好尴尬……