c# - 共享一个随机脚本的两个对象在它们应该产生不同的顺序时产生相同的顺序
问题描述
我有两个“客户”对象,它们在 Unity 中共享一个 Order Manager 脚本。理想情况下,每次客户需要创建新订单时,它都应该与上一个不同。相反,客户 1 订购 X 和 Y,然后客户 2 订购 X 和 Y 而不是 Z(或任何不同的组合)。当脚本仅放置在一个客户而不是 2 个客户身上时,随机订单功能可以正常工作。没有静态变量。
补充一下,如果我清除了客户 1 的订单,下一个订单就不同了。客户 2 的订单仍然会跟随客户 1。例如:客户 1 有 2 个订单:XX,然后 YY 客户 2 不会从第二个订单开始,它会以相同的方式订购:XX,然后是 YY
这是导致问题的方法:
IEnumerator CustomerOrder(bool status, float delayTime)
{
yield return new WaitForSeconds(delayTime);//delay between orders
imageOffset.y = -0.75f;//space between order visuals
numberOfOrderItems = rnd.Next(1, maxOrderNumber + 1);//between 1 and 3 items per order
customerOrder = new GameObject[numberOfOrderItems];// order collection
Instantiate(orderBackgrounds[numberOfOrderItems - 1], orderVisual.transform);//Spawn correct background for number of items
for (int x = 0; x < numberOfOrderItems; x++)
{
int y = rnd.Next(products.Length);//choose a random number representing an index in the products array
customerOrder[x] = Instantiate(productImages[y],
orderVisual.transform.position + imageOffset,
Quaternion.identity,
orderVisual.transform);//spawn a visual representation of the order
imageOffset.y += -0.95f;//places next order visual lower
}
makingOrder = false;//we've finished making the order
}
解决方案
我真的觉得很傻。我可以通过在方法的开头添加一行来解决此问题:
rnd = new System.Random();
我不确定这是否真的是最好的方法,但它似乎有效。
推荐阅读
- mongodb - Query documents (text search) in Restheart
- javascript - 为什么我们会收到错误 - 部署不成功。对于浪涌的反应应用程序?
- function - 带有函数的存储过程在 Oracle 中给了我错误
- java - 似乎我的 Junit 测试在运行时运行,数据源丢失
- mongodb - How do I drop an index in mongoose
- postgresql - 直接备份和恢复postgresql数据文件夹
- perl - print lowest value in hash of hashes
- python - Python3 将字符串单词从 Combobox 转换为 int 值
- azure-devops - How to auto retry deployments to agents when they come online again (after having been offline)
- python - Python:在不构建列表的情况下运行迭代器值的计数