Unity随机对象生成错误

时间:2018-02-23 10:47:23

标签: unity3d unityscript

在垂直游戏中,我在100f内创建随机块。我随机创建了3种不同类型的对象,这些对象是'平台' ' boostplatforms'和'易碎平台'。我生成所有这些代码的代码没有错误,当我运行游戏时,我检查活动时生成的块,但在视觉上只有名为' platform'出现。

我用于此的编码是:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LevelGenerator : MonoBehaviour {

    public GameObject platformPrefab;
    public GameObject platformPrefab2;
    public GameObject platformPrefab3;

    public int numberOfPlatforms = 999;
    public int numberOfBoostPlatforms = 999;
    public int numberOfBreakablePlatforms = 999;
    public float levelWidth = 100f;
    public float minY = 55f;
    public float maxY = 120f;

    // Use this for initialization
    void Start () {

        Vector3 startPosition = new Vector3 ();

        for (int i = 0; i < numberOfPlatforms; i++) 
        {
            startPosition.y += Random.Range (minY, maxY);
            startPosition.x = Random.Range (-levelWidth, levelWidth);
            Instantiate (platformPrefab, startPosition, Quaternion.identity);
        }

        for (int i = 0; i < numberOfBoostPlatforms; i++) 
        {
            startPosition.y += Random.Range (minY, maxY);
            startPosition.x = Random.Range (-levelWidth, levelWidth);
            Instantiate (platformPrefab2, startPosition, Quaternion.identity);
        }

        for (int i = 0; i < numberOfBreakablePlatforms; i++) 
        {
            startPosition.y += Random.Range (minY, maxY);
            startPosition.x = Random.Range (-levelWidth, levelWidth);
            Instantiate (platformPrefab3, startPosition, Quaternion.identity);
        }

    }

    // Update is called once per frame
    void Update () {

    }
}

1 个答案:

答案 0 :(得分:0)

根据提供的信息,我建议如下:

  1. 确认您的预制变量已设置为正确的预制件。
  2. 请注意,每个平台的Y位置都是累积的。验证增强和中断平台不是在所有标准平台之后产生的(它们将基于您的代码)。
  3. 切换到对象池。你在一个帧中产生了3,000个物体,即使大多数物体甚至不可见。我们的想法是产生一个小池,每个池中有10个让我们说,当需要一个新平台(进入视图)时,你可以回收一个不再可见或不需要的现有对象。 Unity's Object Pooling tutorial