我正在制作无尽的亚军游戏,我想自动生成4种地形。自动生成有效,但是我想选择一个随机地形,但是我不知道如何做。我已经试过了:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformManager: MonoBehaviour
{
[SerializeField]
private GameObject[] _platformPrefabs;
[SerializeField]
private int _zedOffset;
// Start is called before the first frame update
void Start()
{
randomTerrain();
}
public void RecyclePlatform(GameObject Platform)
{
Platform.transform.position = new Vector3(0, 0, _zedOffset);
_zedOffset += 12;
}
public void randomTerrain()
{
for (int i = 0; i < _platformPrefabs.Length; i++)
{
Instantiate(_platformPrefabs[Random.Range(0, 3)], new Vector3(0, 0, i * 12), Quaternion.Euler(0, 90, 0));
_zedOffset += 12;
}
}
}
但是它每次都只选择第一个游戏对象,除了第一次启动。如何使其随机选择?
随机数生成器并不是真正随机的;它仅基于给定的种子生成伪随机流。如果未初始化此种子,则可以解释为什么每次都会得到相同的结果。要初始化随机状态,您需要使用Random.InitState
。
一种典型的方法是将系统时钟用于随机数生成器。实际上,像Minecraft这样的游戏可以让您指定此种子,以便相同的种子=相同的随机生成的内容。
Random.InitState