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


}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity-UGUIUnity游戏引擎中的一个UI系统,可以用来创建和管理用户界面。它提供了丰富的功能和工具,使得开发者能够轻松地制作各种表格。 使用Unity-UGUI制作表格的步骤如下: 1. 创建Canvas对象:在Unity中,首先需要创建一个Canvas对象,作为UI渲染的容器。选择GameObject -> UI -> Canvas,即可创建一个Canvas对象。 2. 添加Table组件:选择Canvas对象,在Inspector面板中点击"Add Component"按钮,然后在搜索栏中输入"Table",选择适合的Table组件,点击添加。 3. 设置表格的行列数:在Table组件的Inspector面板中,设置表格所需的行数和列数。 4. 设置表格样式:可以在Inspector面板中设置表格的颜色、大小等属性,以满足具体需求。 5. 添加表格内容:可以通过代码或者拖拽方式,向表格中添加所需的文本或图片。可以通过操作表格的行列索引,将内容放置在特定的位置。 6. 设置表格的交互性:可以为表格中的每个单元格添加点击事件或其他交互效果,提升用户体验。 7. 调整表格布局:可以通过调整Canvas的大小、位置,或者改变组件之间的层次关系,来调整表格的布局。 8. 完善表格功能:可以根据具体需求,添加更多表格的功能,比如排序、过滤、搜索等。 9. 测试和优化:在表格制作完成后,可以进行测试,查看表格的显示效果和交互效果,并进行优化。 总之,使用Unity-UGUI制作表格,只需简单的操作和设置,就能够创建出各种样式、功能丰富的表格,满足游戏或应用程序的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值