[英]Activating SetActive(false) Objects in Unity
在我正在制作的游戲中,我想在觸發時使用 (SetActive(false)) 重新激活已設置為非活動的游戲對象。 我的方法不起作用。 我的代碼-
如何解決這個問題呢。 ?
private void OnTriggerExit(Collider coin)
{
if (coin.CompareTag("coinHolder"))
{
coin.SetActive(true);
Debug.Log(coin.name);
}
}```
一旦您停用游戲 object (̶o̶r̶ ̶c̶o̶m̶p̶o̶n̶e̶n̶t̶)̶,將不再向該對象發送消息!
所以方法如:
將不再被調用。
編輯:正如評論中提到的@derHugo。 OnTriggerExit 如果你禁用了 Component 將被調用,但如果你禁用了 GameObject 它不會; 這是因為您禁用了 Collider(使用游戲對象),這不會導致 OnTriggerExit;
為此,您需要分離邏輯表單顯示,並且只禁用渲染器(網格渲染器或圖像),並啟用您的組件(單行為)!
當游戲 object 被禁用時,不會調用 Unity 生命周期方法。 要克服這個問題,請重新安排您的游戲 object 層次結構,以便使用此 function 的部分始終處於活動狀態。 例如:
Main object (Always active)
├── Visible object (Deactivatable)
└── Collider with main logic (Deactivatable)
└── Non-visible object (Always active)
└── Dummy collider (Always active) (that would trigger OnTriggerExit)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.