对此的任何帮助或见解将不胜感激。仍然是 c# 的菜鸟,所以请多多包涵。这是我的问题:
List<Vector2> vectorList = new List<Vector2>();
for (int i = 0; i < 5; i++)
{
Vector2 tempVector = new Vector2(i, i);
vectorList.Add(tempVector);
}
这很好用,我得到的输出是 5 个具有以下值的向量:(0, 0), (1, 1), (2, 2).. 等等......
我需要得到随机位置,所以我自己做了一个叫做 RandomizePosition() 的小函数。
for (int i = 0; i < 5; i++)
{
Vector2 tempVector = RandomizePosition();
vectorList.Add(tempVector);
}
我从中得到的输出是 5 个向量,包含所有相同的位置。我猜有一个引用问题,或者该函数只被调用一次或什么的。奇怪的是,如果我在调试模式下遍历每个循环,输出就是我所期望的,5 个具有不同 X 和 Y 值的向量,所以我猜这个函数不是问题。(或者更确切地说,它可能是,但不是其中的随机逻辑)。
关于为什么会发生这种情况的任何想法,以及有关如何解决此问题的一些见解?你不能从循环中调用一个函数吗?或者我如何确保每次迭代都调用该函数?谢谢!
这是 RandomizePosition() 函数,如果有帮助的话:
private Vector2 RandomizePosition()
{
Random rand = new Random();
int seedX = rand.Next(1, 14);
int seedY = rand.Next(1, 14);
int posX = 32;
int posY = 32;
if (seedX != 1)
posX += seedX * 64;
if (seedY != 1)
posY += seedY * 64;
return new Vector2(posX, posY);
}