我有一個Hololens石板,它帶有可按下的按鈕來關閉石板。
我想在點擊這個按鈕后銷毀石板。我知道我可以通過制作一個腳本,將石板預制件附加到腳本中(或者將按鈕的父物件作為父游戲物件,直到得到石板),呼叫函式,并使用GameObject.Destroy()。
但是我想了解Interactable腳本中的GameObject下拉選單是如何被填充的:
我理解其他的下拉選單,如Transform、Follow me toggle、Solverhandler等,因為它們被連接到Slate上而被顯示。但是,GameObject選項是如何實作的?這似乎是一個基本的東西,但我想確定它是如何編碼的。如果可以在Gameobject的下拉選單中添加我的新動作,如果可以,如何添加?
我花時間看了Interactable和其他的腳本,但我是C#的初學者,無法看到哪里有這樣的代碼。任何意見都會對我有所幫助,提前感謝
uj5u.com熱心網友回復:不,你不能,因為Object.Destroy是靜態的,在UnityEvent(其中Interactable.OnClick使用)通過 Inspector 你只能選擇實體方法。
你至少需要一個最小的組件,如
public class ObjectDestroyer : MonoBehaviour
{
public void DestroyObject()
{
Destroy(this.gameObject)。
}
或者,如果你不想通過檢查器來做,而是想自動做
public class ObjectDestroyer : MonoBehaviour
{
//span>存盤itneractable參考。
[]
[] private Interactable _interactable;
//可選擇提供一個不同的目標,否則將破壞Interactable。
[]
[] private GameObject _targetToDestroy;
private void Awake()
{
///如果沒有提供可互動的組件,則使用獲取組件作為后備手段。
if(!_interactable) _interactable = GetComponent<Interactable> ();
//在運行時附加回呼(將不會出現在檢查器中)
_interactable.OnClick.AddListener(DestroyObject)。
}
private void DestroyObject()
{
//dev destroy the object of the interactable if no target was provided
if(!_targetToDestroy) _targetToDestroy = _interactable.gameObject;
Destroy(_targetToDestroy)。
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/329079.html
標籤:

