Unity C#scripting - 没有循环的无限循环......等什么?

Ban*_*ndi 2 c# infinite-loop monodevelop unity-game-engine

我刚刚开始使用Unity,我正在尝试整理一个简单的C#脚本,将预制件(一些2D精灵)置于预定位置.问题是,每当我将脚本应用到预制件并尝试播放场景时,Unity会冻结并显然会产生一个耗尽所有内存的无限循环(有时甚至会给我一个黑屏)并且我必须强行杀死任务管理器中的过程.

但是,代码非常简单,根本不包含任何循环:

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

public class DungeonTest : MonoBehaviour {

    public Transform DungeonBuilder;

    // Use this for initialization
        void Start ()
     {
        Instantiate (DungeonBuilder, new Vector2 (1, 1), DungeonBuilder.rotation);
        Instantiate (DungeonBuilder, new Vector2 (2, 2), DungeonBuilder.rotation);
        Instantiate (DungeonBuilder, new Vector2 (3, 3), DungeonBuilder.rotation);

    }

    void Update()
    {


    }
}
Run Code Online (Sandbox Code Playgroud)

从层次结构窗口可以看出,Start()方法创建了几个实例,内存使用率也高达85%(!):

Unity无限循环(?)

请告知这里可能出现的问题.我已经看了几个教程视频,我已经阅读了文档中的相关段落,但我似乎无法想出这个.

谢谢!

Rea*_*ria 8

你的DungeonTest脚本不应该在你实例化的预制件上.发生的事情是每次预制件实例化时都会执行Start().

所以第一个瓷砖创建了3个新瓷砖.每个瓷砖现在也可以制作3个新瓷砖等等.

使用DungeonTile脚本在场景中创建一个新对象,并从正在实例化的预制件中删除所有脚本.

这并不意味着您不能在预制件上安装脚本.只需记住,只要将新实例添加到场景中,Start()方法中的任何内容都将立即执行.