我目前正在 Monogame 中开发 ECS 作为个人项目,我想为我的 Sprite 组件设置默认 Sprite。但是,我不想从 ContentManager 加载文件,我希望在开发内容管道之前将其分开。
是否可以动态实例化,例如,黑白棋盘Texture2D,而不需要从现有纹理加载内容?
在我的构造函数中,我当前有这个用于实例化
if( texture == null )
{
this.texture = new Texture2D(Globals.graphicsDevice, 16, 16);
}
但是它似乎没有显示在屏幕上。这应该作为通用的纯色纹理出现吗?
您已正确创建了大小为 16x16 像素的纹理,但它填充了透明颜色。您需要在其中加载白色。
所以你的代码将是
if( texture == null )
{
this.texture = new Texture2D(Globals.graphicsDevice, 16, 16);
Color[] data = new Color[16*16];
for(int i=0;i<16*16;i++)data[i]=Color.White;
this.texture.SetData<Color>(data);
}
不用说,如果您想设置其他颜色,您应该在循环中更改它。
我更喜欢做的是创建一个 1x1 大小的白色纹理,并使用
Spritebatch.Draw
方法中的参数按照我的意愿对纹理进行缩放和着色。