簡體   English   中英

在 Unity 中激活 SetActive(false) 對象

[英]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̶)̶,將不再向該對象發送消息!

所以方法如:

  • 開始
  • 更新
  • OnTriggerEnter
  • OnCollisionEnter
  • ETC...

將不再被調用。

編輯:正如評論中提到的@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.

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