[英]Issue with storing Instantiated prefabs
(我是 Unity 的新手,可能在這里有點過火)-
我對實例化預制件感到有些困惑。 我有一個實例化預制件的游戲對象(gameManager),然后將實例化對象的引用設置為我的 LevelManager(存儲靜態游戲對象)
我在其他腳本中使用 LevelManager (LevelManager.enemyPrefabInstance) 調用對實例化對象的引用(出於諸如抓取動畫組件之類的原因)。 因為它是靜態存儲的,我認為每個實例化都有共享組件。 如果我實例化兩個敵人並在運行時殺死一個(一旦死亡游戲對象會自行銷毀),第二個會丟失其組件,因為它們也已被銷毀。 我知道我可以將預制引用從靜態更改為非靜態,但我正在嘗試自學靜態對象及其工作原理,因此這違背了我的目的。
有沒有辦法將所有實例化對象存儲為單個靜態游戲對象,以便它們都有自己的獨立組件?
提前謝謝了
編輯 - 我被告知實例不共享組件,無論它們是否存儲為靜態。 當我嘗試銷毀第二個實例化克隆時得到的確切錯誤是:
MissingReferenceException:“Animator”類型的對象已被銷毀,但您仍在嘗試訪問它。 您的腳本應該檢查它是否為空或不銷毀對象。
游戲管理器腳本:
Void Awake()
{
GameObject enemyPrefabInstantiated = Instantiate(enemyPrefab, position, rotation);
//instantiate gameObject
LevelManager.enemyPrefabInstantiated = enemyPrefabInstantiated;
//Set reference for LevelManager
}
級別管理器:
public static GameObject enemyPrefabInstantiated; //Stores static GameObject
動畫腳本:
public Animator enemyAnim;
void Start()
{
enemyAnim = LevelManager.enemyPrefabInstantiated.GetComponent<Animator>();
//Gets animator component off instantiated prefab
}
void OnDestroy()
{
Destroy(enemyAnim.gameObject);
//destroy gameobject
}
你的參考是:
GameObject prefab; //your prefab you want to instantiate
GameObject obj1 =Instantiate(prefab);
//create your first gameobject
GameObject obj2 =Instantiate(prefab);
//and the second
obj2 變量現在只引用預制件的實例化副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.