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%(!):
请告知这里可能出现的问题.我已经看了几个教程视频,我已经阅读了文档中的相关段落,但我似乎无法想出这个.
谢谢!
你的DungeonTest脚本不应该在你实例化的预制件上.发生的事情是每次预制件实例化时都会执行Start().
所以第一个瓷砖创建了3个新瓷砖.每个瓷砖现在也可以制作3个新瓷砖等等.
使用DungeonTile脚本在场景中创建一个新对象,并从正在实例化的预制件中删除所有脚本.
这并不意味着您不能在预制件上安装脚本.只需记住,只要将新实例添加到场景中,Start()方法中的任何内容都将立即执行.
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |