我剛開始使用Unity,我試圖將一個簡單的C#腳本放置在預定位置上的Prefabs(一些2D精靈)。問題在於,無論何時我將腳本應用於預製場景並嘗試播放場景,Unity都會凍結,並且顯然會生成一個耗盡所有內存的無限循環(有時甚至會給我一個黑屏),我必須強制殺死任務管理器中的進程。Unity C#腳本 - 沒有循環的無限循環...等什麼?
的代碼,但是,是非常簡單的,不包含任何迴路都:
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()
{
}
}
它可以從層次結構窗口中可以看出,在啓動()方法創建幾個實例和內存使用量也變高達85%(!):
請什麼可能可能出了錯這裏建議。我已經看了幾個教程視頻,並且我已經閱讀了文檔中的相關段落,但我似乎無法弄清楚這一點。
謝謝!
你的地牢建設者瓷磚上有任何腳本嗎?場景中的瓷磚正在以3的冪增長,這告訴我實例化的瓷磚上的某些東西也在製作新的瓷磚。也許你不小心把DungeonTest腳本放在了瓷磚預製件上? – Reasurria
不,只有這個腳本被附加到預製件上。場景的層次結構只包括主攝像頭和將腳本作爲組件添加到的dungeonTile預製件。我按照文檔的「實例化預製件」一節中的說明進行操作。 – Bandi
等等呃......這個腳本是預製的,因爲這個腳本是你的'DungeonBuilder'遊戲對象的一個組件?這意味着每個實例化的對象都會調用自己的'Start()',這會反過來創建3個更多的實例化對象等等,等等,這似乎與您的場景的屏幕截圖一致。 – Serlite