Unity3D(通過Tag 標籤查詢物體)
阿新 • • 發佈:2019-02-18
1.Tag 簡介
Tag 標籤,就是一個標籤。標籤可以起到標識,區分的作用。
同一類的模型,我們可以根據需要給他們設定成統一的標籤。
2.給模型新增Tag 標籤
選中一個模型,在模型的Inspector 面板上的頂部位置,設定Tag 選項為一個
具體的標籤。
如果說引擎提供的標籤沒有自己想要的標籤,可以自己手動新增新標籤。
3.通過Tag 標籤查詢N 個物體
GameObject.FindGameObjectsWithTag(string):[靜態方法]
通過特定的標籤,查詢到所有“貼有”該標籤的遊戲物體,返回一個數組。
String:標籤名
4.for 迴圈輸出模型資訊
通過for 迴圈遍歷FindGameObjectsWithTag()方法返回的陣列,輸出
遊戲物體的資訊。
using UnityEngine;
using System.Collections;
public class DeskTrigger : MonoBehaviour {
private GameObject[] m_Desk; //建立一個全部遊戲物件GameObject型別的陣列 void Start () { m_Desk = GameObject.FindGameObjectsWithTag ("Desks"); 查詢所有關於Desk標籤的物件,儲存到陣列m_Desk /* for(int i = 0; i < m_Desk.Length; i++) //遍歷陣列,輸出物件的名稱 { Debug.Log (m_Desk[i].name); } */ } void Update () { if(Input.GetKeyDown(KeyCode.Z)) { //up. DesksUp(); } if(Input.GetKeyUp(KeyCode.Z)) { //down. DesksDown(); } } void DesksUp() { for(int i = 0; i < m_Desk.Length; i++) { //遍歷陣列,將陣列的全部物件以自身座標系整體向上乘2 //gameObject m_Desk [i].GetComponent<Transform> ().Translate (Vector3.up * 2, Space.Self); } } void DesksDown() { for(int i = 0; i < m_Desk.Length; i++) { //如上,將陣列整體向下乘2 m_Desk [i].GetComponent<Transform> ().Translate (Vector3.up * -2, Space.Self); } } //觸發器實現標籤內所有物件的移動 void OnTriggerEnter(Collider coll) { if(coll.gameObject.name == "Student") { DesksUp (); } } void OnTriggerExit(Collider coll) { if(coll.gameObject.name == "Student") { DesksDown (); } }
}