XNA中的随机纹理

时间:2012-11-15 08:38:14

标签: xna textures

好的,所以我有这个游戏,我正在研究,我是XNA的新手(我使用的是4.0),我想做的是每次产生敌人时都会有不同的纹理。

所以我有这些图像“image1.png”,“image2.png”等等。我想让它在每次生成新敌人时使用不同的纹理,到目前为止它只在游戏运行时加载一个随机图像,所以问题必须是随机方法不会为每个生成更新但是在开始时设置游戏我在网上搜索了很多,并尝试了解决方案,虽然我会工作,但没有希望......所以我的代码是

LoadContent()我有这段代码:

Random textureRandom = new Random();
            int skinRandom = textureRandom.Next(1, 4);
            string lamp = string.Concat("image", skinRandom.ToString());
            enemyTex = Content.Load<Texture2D>(lamp) as Texture2D; 

1 个答案:

答案 0 :(得分:3)

如果我没记错,Game.LoadContent()方法只在初始化(Game.Initialize())加载游戏资源时被调用一次。您可以强制游戏重新加载这些资源,但由于您不想重新加载所有资源,我建议您在LoadContent()方法中加载所需的所有图像,如下所示:

List<Texture2D> texturePool = new List<Texture2D>();
Random rng = new Random();

protected override void LoadContent()
{
    for(int i = 0; i < 4; i++)
        texturePool.Add(Content.Load<Texture2D>("image" + i.ToString()));
}

然后在敌人产生之前,通过从加载的池中选择一个来更改使用的纹理。

enemyTex = texturePool[rng.NextInt(texturePool.Count)];

也许您可以将标题更改为“XNA中的随机纹理”或类似的东西,因为您想要更改每个生成而不是每次绘制的纹理,并且此技术可以在更多情况下应用。