U3D GameObject 解讀

  GameObject自己沒有功能,是Unity場景裏全部組件的基類,但不少時候咱們須要在腳本中操做GameObject。先講一下GameObject類包含哪些內容,其中經常使用的用紅色標出了html

 

Variables 變量

activeInHierarchy Is the GameObject active in the scene?
場景中的遊戲對象是否激活?
activeSelf The local active state of this GameObject. (Read Only)
該遊戲對象的局部激活狀態。(只讀)
isStatic Editor only API that specifies if a game object is static.
若是一個遊戲對象是靜態僅在編輯器API指定。
layer The layer the game object is in. A layer is in the range [0…31].
遊戲對象所在的層,層的範圍是在[0…31]之間。
scene Scene that the GameObject is part of.
場景物體。
tag The tag of this game object.
這個遊戲對象的標籤。
transform The Transform attached to this GameObject. (null if there is none attached).
附加於這個遊戲對象上的變換。(若是沒有則爲空)

Constructors 構造器

GameObject Creates a new game object, named name.
建立一個新的遊戲物體,命名爲name。

Functions 函數

AddComponent Adds a component class named /className/ to the game object.
添加一個名稱爲className的組件到遊戲對象。
BroadcastMessage Calls the method named /methodName/ on every MonoBehaviour in this game object or any of its children.
對此遊戲對象及其子對象的全部MonoBehaviour中調用名稱爲methodName的方法。
CompareTag Is this game object tagged with /tag/?
此遊戲對象是否被標記爲tag標籤?
GetComponent Returns the component of Type /type/ if the game object has one attached, null if it doesn't.
若是這個遊戲對象附件了一個類型爲type的組件,則返回該組件,不然爲空。
GetComponentInChildren Returns the component of Type /type/ in the GameObject or any of its children using depth first search.
返回此遊戲對象或者它的全部子對象上(深度優先)的類型爲type的組件。
GetComponentInParent Finds component in the parent.
從父對象查找組件。
GetComponents Returns all components of Type /type/ in the GameObject.
返回該遊戲對象全部type類型的組件列表。
GetComponentsInChildren Returns all components of Type /type/ in the GameObject or any of its children.
返回此遊戲對象與其子對象全部type類型的組件。
GetComponentsInParent Returns all components of Type /type/ in the GameObject or any of its parents.
返回此遊戲對象與其父對象全部type類型的組件。
SampleAnimation Samples an animation at a given time for any animated properties.
用於任何動畫剪輯在給定的時間採樣動畫。
SendMessage Calls the method named /methodName/ on every MonoBehaviour in this game object.
在這個遊戲物體上的全部MonoBehaviour上調用名稱爲methodName的方法。
SendMessageUpwards Calls the method named /methodName/ on every MonoBehaviour in this game object and on every ancestor of the behaviour.
在這個遊戲物體及其祖先物體的全部MonoBehaviour中調用名稱爲methodName的方法。
SetActive Activates/Deactivates the GameObject.
激活/停用此遊戲對象。

Static Functions 靜態函數

CreatePrimitive Creates a game object with a primitive mesh renderer and appropriate collider.
建立一個帶有原型網格渲染器和適當的碰撞器的遊戲對象。
Find Finds a game object by /name/ and returns it. 
找到並返回一個名字爲name的遊戲物體。
FindGameObjectsWithTag Returns a list of active GameObjects tagged /tag/. Returns empty array if no GameObject was found. 
返回具體tag標籤的激活的遊戲對象列表,若是沒有找到則爲空。
FindWithTag Returns one active GameObject tagged /tag/. Returns null if no GameObject was found. 
返回標記爲tag的一個遊戲對象,若是沒有找到對象則爲空。

 
下面舉幾個例子
 
   public static GameObject Find(string name)
    Find找到並返回一個名字爲name的遊戲物體,若是以name爲名字的遊戲物體沒有被找到,則返回空.。  若是name中包含'/'字符,這個名稱將被視做一個hierarchy中的路徑名,好比 GameObject.Find("animals/cat")就只會查到父物體名字爲animals的cat物體。. 這個函數只返回活動的遊戲物體。  
   除非無可奈何,建議不要在每一幀中使用這個函數。由於其效率比較低,通常的作法是,在Awake或Start方法中經過Find找到,而後保存到成員變量中。
   注:Find查找時,只要是當前場景下的物體默認均可以查找到,並且無論是將腳本掛在那個對象上均可以查找到
    若是有多個同名對象,只能查找到一個
 
  那麼如何查找active爲false的物體呢?
    一、不要使用Find,直接在代碼中經過public的變量關聯物體。
    二、不要設置物體的active爲false,先在遊戲最開始時經過代碼找到物體,而後經過代碼設爲false
    三、經過transform.Find
 
  下面例子演示怎麼查找到名爲Hand的GameObject物體
using UnityEngine;

using System.Collections;

 

public class ExampleClass : MonoBehaviour {

    public GameObject hand;

    void Example() {

        hand = GameObject.Find("Hand");

        hand = GameObject.Find("/Hand");

        hand = GameObject.Find("/Monster/Arm/Hand");

        hand = GameObject.Find("Monster/Arm/Hand");

    }

}

  FindWithTag用法與此相似,這裏就不舉例了數組

 

  public Component GetComponent(Type type)
app

  type 表示檢索數組的類型編輯器

  若是這個遊戲對象附件了一個類型爲type的組件,則返回該組件,不然爲空。ide

using UnityEngine;

public class GetComponentExample : MonoBehaviour
{
    void Start()
    {
        HingeJoint hinge = gameObject.GetComponent(typeof(HingeJoint)) as HingeJoint;

        if (hinge != null)
            hinge.useSpring = false;
    }
}

  

  public T GetComponent()   函數

using UnityEngine;

public class GetComponentGenericExample : MonoBehaviour
{
    void Start()
    {
        HingeJoint hinge = gameObject.GetComponent<HingeJoint>();

        if (hinge != null)
            hinge.useSpring = false;
    }
}

 

  public Component GetComponent(string type)動畫

     type 表示檢索數組的類型

       若是這個遊戲對象附件了一個類型爲type的組件,則返回該組件,不然爲空。this

using UnityEngine;

public class GetComponentNonPerformantExample : MonoBehaviour
{
    void Start()
    {
        HingeJoint hinge = gameObject.GetComponent("HingeJoint") as HingeJoint;

        if (hinge != null)
            hinge.useSpring = false;
    }
}

   

  當你把腳本掛在一個物體上以後,腳本中的gameObject表明該物體,例如能夠經過gameObject.name來獲取腳本掛載對象的名字spa

相關文章
相關標籤/搜索