Unity3D动态生成按钮

221900234柯婉婷 学生 2022-06-26 21:25:27

目录

  • 一、技术概述
  • 二、技术详述
  • 2.1 技术详细描述
  • 2.2 C#代码详解
  • 三、问题和解决方案
  • 3.1 技能栏每次更新会在原来的基础上重新生成按钮。
  • 四、总结
  • 五、参考文献/博客

一、技术概述

Unity3D动态生成按钮。

二、技术详述

2.1 技术详细描述

在游戏开发过程中进行技能栏按钮制作时,由于技能数量和数据都不确定,需要从Manager获取数据之后才能进行生成。这样的情况显然不能讲整个技能栏做成固定预制体进行显示和隐藏,因此需要涉及到按钮的动态生成,在获取到数据的时候对设计好的按钮预制体进行初始化和生成。

2.2 C#代码详解

    public void Init()
    {
        //获取数据列表
        turretList = BuildingManager.Instance.turretList;

        for (int i = 0; i < turretList.Count; i++)
        {
            int index = i;

            //初始化预制体
            TwrX = Instantiate(ResMgr.Instance.Load<GameObject>("Prefabs/UI/tower_step"));
            TwrX.name = $"tower_Step_{i}";
            //初始化点击事件
            BtnX = TwrX.GetComponentInChildren<Button>();
            BtnX.onClick.AddListener(() => {
                if (isActive)// && System.Convert.ToInt32(CountX.text)>0
                {
                    turretIsClicked = turretList[index];
                    BuildingManager.Instance.build(index);
                }
            });

            //以下填充按钮属性
            //······
        }

        //将面板设置为按钮的父物体
        TwrX.transform.SetParent(Step_Panel.transform);
    } 

三、问题和解决方案

3.1 技能栏每次更新会在原来的基础上重新生成按钮。

每次Init技能栏之前先对技能栏下子物体(即动态生成的技能按钮)进行检索删除,避免数据修改或重复显示。

四、总结

了解Unity3D底层逻辑,可以帮助解决大部分遇到的问题。

五、参考文献/博客

unity动态生成按钮

...全文
688 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

139

社区成员

发帖
与我相关
我的任务
社区描述
2022年福大-软件工程;软件工程实践-W班
软件工程 高校
社区管理员
  • FZU_SE_teacherW
  • 丝雨_xrc
  • Lyu-
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧