gpt4 book ai didi

c# - XNA 随机选择的纹理总是选择相同的纹理

转载 作者:行者123 更新时间:2023-11-30 20:07:56 25 4
gpt4 key购买 nike

我编写这段代码是为了将大约 8 种不同的纹理加载到具有纹理属性的对象列表中。

我有一个包含名为“1.png、2.png、3.png、......、46.png”的纹理的文件夹,我希望 8 个不同的对象加载随机选择的纹理。

        DockedFruitsList = new List<Fruit>(8);
for (int i = 0; i < 8; i++)
{
Fruit temp = new Fruit();
temp = new Fruit();
temp.Position = AvailablePositions[i];
int random=(new Random().Next(0, 4600) % 46);
temp.Texture = Content.Load<Texture2D>(@"Fruits/" + random);
DockedFruitsList.Add(temp);

}

问题是,尽管随机总是生成不同的数字,但绘制的结果始终是相同的纹理,从一次运行到另一次运行都会发生变化,但所有 8 个纹理始终相同

spriteBatch.Begin();
for (int i = 0; i < DockedFruitsList.Count; i++)
{
spriteBatch.Draw(DockedFruitsList[i].Texture, DockedFruitsList[i].Position, Color.White);
}
spriteBatch.End();

最佳答案

试试这个:

for (int i = 0; i < 100; i++)
Console.WriteLine(new Random().Next(0, 10));

很有可能你会得到这样的输出:

5
5
5
.
.
.

这是因为 Random 类的种子是用基于时间的值初始化的。如果您在同一时间点附近初始化 Random 类的多个实例,那么它们都将以相同的种子结束,因此它们将产生的值都将相同。

您真正想要做的是创建一个 Random 实例并将其用于所有随机值。生成的值将彼此无关:

var r = new Random();
for (int i = 0; i < 100; i++)
Console.WriteLine(r.Next(0, 10));

输出:

2
8
0
.
.
.

关于c# - XNA 随机选择的纹理总是选择相同的纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7750415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com