为什么我的 Unity 程序在尝试通过 C# 脚本创建多个游戏对象时冻结?

Why my unity program froze when trying to create multiple gameobjects by c# script?

我在层次结构中有两个 ThirdPersonController。 然后我创建新的 c# 脚本文件,然后将脚本拖到第一个 ThirdPersonController。

它应该克隆第一个 ThirdPersonController 的更多 10 个 ThirdPersonController。

这是脚本:

using UnityEngine;
using System.Collections;

public class Multiple_objects : MonoBehaviour {

    public GameObject prefab;
    public GameObject[] gos;

    void Awake()
    {
        gos = new GameObject[10];
        for(int i = 0; i < gos.Length; i++)
        {
            GameObject clone = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
            gos[i] = clone;
        }
    }

    // Use this for initialization
    void Start () {

    }

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

    }
}

在 Prefab 脚本区域的 ThirdPersonController 检查器中,我选择了 ThirdPersonController。

但是当 运行 Unity 游戏时,整个程序都被冻结了,我不得不使用任务管理器将其关闭。 我知道它是脚本的问题,因为我在没有脚本的情况下尝试过并且很好。

我想做的是当 运行 游戏 10 或 20 个 ThiredPersonControllers 时,每个 ThiredPersonControllers 使用 c# 脚本在另一个位置。

我的层次结构的屏幕截图:

据我所见,您正在初始化的预制件似乎具有 "Multiple_objects" 脚本,因此这意味着每个新实例都将执行该脚本并创建 10 个以上,依此类推。

尝试将 "Multiple_objects" 脚本放在另一个不会动态初始化的游戏对象上。 (例如:一个空的游戏对象、主相机、平行光)。