如何在不知道其類型的情況下禁用組件? 我得到的最好的是這個,但組件上沒有enabled
選項?即使不知道類型也禁用組件
Component[] tmpComponents = tmpGO.GetComponents <Component>();
foreach (Component tmpComponent in tmpComponents)
{
if (tmpComponent.GetType() != Transform && tmpComponent.GetType() != MeshRenderer)
{
tmpComponent.enabled = false; <= ???
}
}
我也嘗試
tmpGO.GetComponent <tmpComponent.GetType()>().enabled = false;
但沒有奏效。
更新: 我嘗試這個,但現在它給予不同的長度。
Component[] components = tmpGO.GetComponents <Component>();
Behaviour[] behaviours = tmpGO.GetComponents <Behaviour>();
for (int x = 0; x < components.Length; x++)
{
if (components[x].GetType() != typeof (Transform) && components[x].GetType() != typeof (MeshRenderer))
{
Debug.Log (components.Length);
Debug.Log (behaviours.Length);
//behaviours [x].enabled = false;
}
}
這不起作用,因爲詢問行爲不會給我一個可以啓用的組件的完整列表。
好的,但我如何比較它的類型?如果我必須禁用一切,那麼我可能只是禁用gameobject? – user3014330
@ user3014330如果你只想要一個或多個特定類型的組件,我通常會使用'GetComponents'類型參數進行過濾。無論您指定什麼類型,它只會返回該類型的組件。 – rutter
那麼,我的目標主要是在腳本放置在屏幕上後重新啓用腳本,就像通過構建系統一樣。 因此,我最終使用,但我希望組件只會抱怨說,某些不能被禁用,而不是沒有,總之... –
user3014330