如何在Unity中选择随机GameObject

问题描述 投票:0回答:1

我正在制作无尽的亚军游戏,我想自动生成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;
        }
    }

}

但是它每次都只选择第一个游戏对象,除了第一次启动。如何使其随机选择?

Inspector view of script

c# unity3d random
1个回答
0
投票

随机数生成器并不是真正随机的;它仅基于给定的种子生成伪随机流。如果未初始化此种子,则可以解释为什么每次都会得到相同的结果。要初始化随机状态,您需要使用Random.InitState

一种典型的方法是将系统时钟用于随机数生成器。实际上,像Minecraft这样的游戏可以让您指定此种子,以便相同的种子=相同的随机生成的内容。

Random.InitState
© www.soinside.com 2019 - 2024. All rights reserved.