簡體   English   中英

存儲實例化預制件的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM