Demo下载
Find,FindGameObjectWithTag,FindGameObjectsWithTag三种方式,推荐FindGameObjectsWithTag方式,性能最优。其次是FindGameObjectWithTag,最后是Find
推荐FindGameObjectsWithTag方式返回的GameObject数组。FindGameObjectWithTag和Find返回的是GameObject。
FindGameObjectsWithTag和FindGameObjectsWithTag方式获取的如下的Tag。
实现的功能:
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;//Find,FindGameObjectWithTag,FindGameObjectsWithTag总结//Find,FindGameObjectWithTag,FindGameObjectsWithTag三种方式,推荐FindGameObjectsWithTag方式,性能最优。其次是FindGameObjectWithTag,最后是Find//推荐FindGameObjectsWithTag方式返回的GameObject数组。FindGameObjectWithTag和Find返回的是GameObject。public class Demo : MonoBehaviour{public GameObject myGameObject;public GameObject myGameObject2;public GameObject myGameObject3;GameObject panel;GameObject panel2;GameObject[] panel3;GameObject[] panel4;void Start(){myGameObject = Resources.Load<GameObject>("Prefabs/Test");myGameObject2 = Resources.Load<GameObject>("Prefabs/Test2");myGameObject3 = Resources.Load<GameObject>("Prefabs/Test3");//FindWithTagsMethod();//FindWithTagMethod2();//FindMethod2();FindMethod();//SetAsFirstSibling是在编辑器里往上移动层级。显示在画面的后面。//myGameObject.transform.SetAsFirstSibling();//myGameObject2.transform.SetAsFirstSibling();//myGameObject3.transform.SetAsFirstSibling();//SetAsLastSibling是在编辑器里往下移动层级。显示在画面的前面。//myGameObject.transform.SetAsLastSibling();//myGameObject2.transform.SetAsLastSibling();//myGameObject3.transform.SetAsLastSibling();//SetSiblingIndex里的数字越大,是在编辑器里越往下。显示在画面的前面。myGameObject.transform.SetSiblingIndex(0);myGameObject2.transform.SetSiblingIndex(1);myGameObject3.transform.SetSiblingIndex(2);}public void FindMethod(){panel = GameObject.Find("Panel");panel2 = GameObject.Find("Panel2");myGameObject = Instantiate(myGameObject, panel.transform);myGameObject.transform.SetParent(panel2.transform);myGameObject2 = Instantiate(myGameObject2, panel.transform);myGameObject2.transform.SetParent(panel2.transform);myGameObject3 = Instantiate(myGameObject3, panel.transform);myGameObject3.transform.SetParent(panel2.transform);}public void FindMethod2(){//假设多个控件名字都是Panel,从上到下寻找名字为Panel的控件,获取的是名字是Panle最上面的控件,下面的控件就忽略掉了。panel = GameObject.Find("Panel");myGameObject = Instantiate(myGameObject, panel.transform);myGameObject2 = Instantiate(myGameObject2, panel.transform);myGameObject3 = Instantiate(myGameObject3, panel.transform);}public void FindWithTagMethod(){panel = GameObject.FindGameObjectWithTag("TestPanel");panel2 = GameObject.FindGameObjectWithTag("TestPanel2");myGameObject = Instantiate(myGameObject, panel.transform);myGameObject.transform.SetParent(panel2.transform);myGameObject2 = Instantiate(myGameObject2, panel.transform);myGameObject2.transform.SetParent(panel2.transform);myGameObject3 = Instantiate(myGameObject3, panel.transform);myGameObject3.transform.SetParent(panel2.transform);}public void FindWithTagMethod2(){//假设多个控件设的tag都是TestPanel,从上到下寻找tag为TestPanel的控件,获取的是tag为TestPanel最上面的控件,下面的控件就忽略掉了。panel = GameObject.FindGameObjectWithTag("TestPanel");myGameObject = Instantiate(myGameObject, panel.transform);myGameObject2 = Instantiate(myGameObject2, panel.transform);myGameObject3 = Instantiate(myGameObject3, panel.transform);}public void FindWithTagsMethod(){panel3 = GameObject.FindGameObjectsWithTag("TestPanel");panel4 = GameObject.FindGameObjectsWithTag("TestPanel2");myGameObject = Instantiate(myGameObject, panel3[0].transform);myGameObject.transform.SetParent(panel4[0].transform);myGameObject2 = Instantiate(myGameObject2, panel3[0].transform);myGameObject2.transform.SetParent(panel4[0].transform);myGameObject3 = Instantiate(myGameObject3, panel3[0].transform);myGameObject3.transform.SetParent(panel4[0].transform);}public void FindWithTagsMethod2(){//假设多个控件设的tag都是TestPanel,从上到下寻找tag为TestPanel的控件,数组为0是最上面,数组里的值越大,寻找到的是下面层级的控件。panel3 = GameObject.FindGameObjectsWithTag("TestPanel");myGameObject = Instantiate(myGameObject, panel3[1].transform);myGameObject2 = Instantiate(myGameObject2, panel3[1].transform);myGameObject3 = Instantiate(myGameObject3, panel3[1].transform);}}