在运行时在 Unity 中按程序放置对象 (C#)

Procedurally place objects at runtime in Unity (C#)

我希望我的游戏有石头,散布在地形上。然后玩家可以捡起这些石头。不过,我的地形相当大(统一计算大约为 5000x5000)。我认为放置数百(甚至数千)块石头作为游戏对象并不是最佳选择。由于我的游戏是多人游戏,我不能在玩家行走时实例化石头,因为两个玩家相互靠近会看到石头生成。我也不能将石头添加到我的地形的树上并大量放置它们,因为它会与我的砍树和砍伐脚本冲突。

我认为的解决方案是以某种方式在玩家不注意的情况下按程序放置石头。这是最好的方法吗?如果是,怎么做?

我不需要任何代码,但如果有人可以概述一下他们将如何处理这个问题,请问?我想不出最好的方法...任何想法都会很棒!

不久前我自己解决了这个问题。 我建议阅读 "Linear congruential generators" 1

它们用于生成伪随机数。但是随机数取决于给定的种子。所以如果每个玩家都有相同的种子,应该可以在玩家行走时生成石头。由于相同的种子,所有玩家都会在 x、y 位置获得相同的随机数,因此他们都会在相同的位置生成相同的石头。