4

好的,所以我正在开发这款游戏,我是 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; 
4

1 回答 1

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 中的随机纹理”或类似的名称,因为您希望在每次生成而不是每次绘制时都更改纹理,并且该技术可以应用于更多情况。

于 2012-11-15T09:35:05.537 回答