【问题标题】:Random textures in XNAXNA 中的随机纹理
【发布时间】:2012-11-15 08:38:13
【问题描述】:

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

【问题讨论】:

    标签: xna textures


    【解决方案1】:

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

    【讨论】:

    • 嘿,这是一个非常好的主意,尽管它现在由于某种原因给了我一个黑屏。但我会玩弄它,这肯定对大多数人有用。如果我找到一个可行的解决方案,我会发布我的解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多