[英]How to get GameObject references
嗨,我想知道是否還有其他方法可以通過C#中的代碼將GameObject設置為活動狀態
我唯一知道的就是這樣做:
public GameObject box;
box.SetActive(true);
真的很棒,您可以將對象放到檢查器上,但是我想知道是否還有其他方法
例如使用對象的特定名稱或使用特定標簽將GameObjects激活。 每當我用谷歌搜索時,或者我搜索錯誤時,我都很難找到一個示例
有什么建議嗎?
您是否看過GameObject API或《 手冊》 ?
有Find , FindWithTag , FindGameObjectsWithTag
或諸如GetComponentInChildren , FindObjectOfType , FindObjectsOfType之類的方法
(那些可以用來查找某種類型的組件,從而可以根據gameObject
在那里設置(激活)的組件)
但是由於您請求通過標簽激活多個對象:
var targetObjects = GameObject.FindGameObjectsWithTag("YourTag");
foreach(var obj in targetObjects)
{
obj.SetActive(true);
}
但是請注意,這比從檢查員那里獲得參考要貴得多。 因此,通常盡量避免使用這些FindXY
方法。
是的,remy_rm如何正確地在注釋中指出,您絕對不應該在任何更新循環或定期調用的其他方法中使用它們。 您應該始終調用它們,例如在Awake
, Start
等中,並保存引用以供以后
更新
如果我正確理解了您的評論,那么在那些您還希望將其設置為活動的帶標簽的對象中還包含一些子對象:
var targetObjects = GameObject.FindGameObjectsWithTag("YourTag");
foreach(var obj in targetObjects)
{
obj.SetActive(true);
// also activate all children
foreach(Transform child in obj.transform)
{
child.gameObject.SetActive(true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.