Unity腳本:激活遊戲物件 SetActive

在Unity腳本中,要激活遊戲物件的方法就是使用遊戲物件的SetActive方法:

gameObject.SetActive(true);
短短一行程式碼,但依然有要注意的地方。
首先遊戲物件在未激活的狀態下,本身的腳本是不會執行的,
所以如果你在一個激活的遊戲物件的start()函式中使用下面程式碼:
gameObject.SetActive(false);

可以成功地將物件變成非激活狀態,
但是在一個非激活的物件中使用下面程式碼:
gameObject.SetActive(true);
  
是無法讓物件激活的,因為這個腳本根本就不會執行。
所以必須在其他遊戲物件的腳本中取得要激活的遊戲物件,然後才能再將其激活。
另外一個重點是,對於有子物件的遊戲物件而言,
自身的激活狀態並不影響其子物件的激活狀態。
不會因為父物件被轉為非激活,子物件就變成非激活。
但是在場景中,父物件是非激活的狀態下,即便子物件本身是激活狀態,
也不會在場景中顯示。
而父物件在激活狀態下,子物件的非激活會讓子物件消失在場景中。
譬如說B物件是A物件的子物件,
當 A物件處在非激活狀態,B物件是激活狀態==>場景中視看不到A物件與B物件
當 A物件處在激活狀態,B物件是非激活狀態==>場景中視看不到B物件
要取得自身的激活狀態可以使用遊戲物件的activeSelf屬性
而要取得所屬階層結構的激活狀態可以使用遊戲物件的activeInHierarchy屬性。
下面是來自官網教學的js程式

#pragma strict
public var myObject :GameObject;
function Start ()
{
    Debug.Log("Active Self: " + myObject.activeSelf);
    Debug.Log("Active in Hierarchy" + myObject.activeInHierarchy);
}


官網的教學:

















轉至: http://www.victsao.com/blog/97-unity/422-unity-script-activating-gameobjects

留言

這個網誌中的熱門文章

數位信封 Digital Envelope

SSL的運作原理