200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Unity-通过预制件和克隆方法动态实现各个UGUI下控件的创建和显示

Unity-通过预制件和克隆方法动态实现各个UGUI下控件的创建和显示

时间:2020-06-15 03:36:00

相关推荐

Unity-通过预制件和克隆方法动态实现各个UGUI下控件的创建和显示

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);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。