有没有办法动态创建通用的Texture2D?

问题描述 投票:0回答:1

我目前正在 Monogame 中开发 ECS 作为个人项目,我想为我的 Sprite 组件设置默认 Sprite。但是,我不想从 ContentManager 加载文件,我希望在开发内容管道之前将其分开。

是否可以动态实例化,例如,黑白棋盘Texture2D,而不需要从现有纹理加载内容?

在我的构造函数中,我当前有这个用于实例化

if( texture == null )
{
    this.texture = new Texture2D(Globals.graphicsDevice, 16, 16);
}

但是它似乎没有显示在屏幕上。这应该作为通用的纯色纹理出现吗?

c# xna monogame texture2d
1个回答
0
投票

您已正确创建了大小为 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
方法中的参数按照我的意愿对纹理进行缩放和着色。

© www.soinside.com 2019 - 2024. All rights reserved.