Unity腳本:激活遊戲物件 SetActive
在Unity腳本中,要激活遊戲物件的方法就是使用遊戲物件的SetActive方法:
短短一行程式碼,但依然有要注意的地方。
首先遊戲物件在未激活的狀態下,本身的腳本是不會執行的,
所以如果你在一個激活的遊戲物件的start()函式中使用下面程式碼:
可以成功地將物件變成非激活狀態,
但是在一個非激活的物件中使用下面程式碼:
是無法讓物件激活的,因為這個腳本根本就不會執行。
所以必須在其他遊戲物件的腳本中取得要激活的遊戲物件,然後才能再將其激活。
另外一個重點是,對於有子物件的遊戲物件而言,
自身的激活狀態並不影響其子物件的激活狀態。
不會因為父物件被轉為非激活,子物件就變成非激活。
但是在場景中,父物件是非激活的狀態下,即便子物件本身是激活狀態,
也不會在場景中顯示。
而父物件在激活狀態下,子物件的非激活會讓子物件消失在場景中。
譬如說B物件是A物件的子物件,
當 A物件處在非激活狀態,B物件是激活狀態==>場景中視看不到A物件與B物件
當 A物件處在激活狀態,B物件是非激活狀態==>場景中視看不到B物件
要取得自身的激活狀態可以使用遊戲物件的activeSelf屬性,
而要取得所屬階層結構的激活狀態可以使用遊戲物件的activeInHierarchy屬性。
下面是來自官網教學的js程式:
官網的教學:
轉至: http://www.victsao.com/blog/97-unity/422-unity-script-activating-gameobjects
gameObject.SetActive( true ); |
首先遊戲物件在未激活的狀態下,本身的腳本是不會執行的,
所以如果你在一個激活的遊戲物件的start()函式中使用下面程式碼:
gameObject.SetActive(
false
);
但是在一個非激活的物件中使用下面程式碼:
是無法讓物件激活的,因為這個腳本根本就不會執行。
所以必須在其他遊戲物件的腳本中取得要激活的遊戲物件,然後才能再將其激活。
另外一個重點是,對於有子物件的遊戲物件而言,
自身的激活狀態並不影響其子物件的激活狀態。
不會因為父物件被轉為非激活,子物件就變成非激活。
但是在場景中,父物件是非激活的狀態下,即便子物件本身是激活狀態,
也不會在場景中顯示。
而父物件在激活狀態下,子物件的非激活會讓子物件消失在場景中。
譬如說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
留言
張貼留言