为什么我的 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" 脚本放在另一个不会动态初始化的游戏对象上。 (例如:一个空的游戏对象、主相机、平行光)。
我在层次结构中有两个 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" 脚本放在另一个不会动态初始化的游戏对象上。 (例如:一个空的游戏对象、主相机、平行光)。