Unity3D动态生成按钮
目录
- 一、技术概述
- 二、技术详述
- 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底层逻辑,可以帮助解决大部分遇到的问题。
五、参考文献/博客
相关推荐
Unity3D动态生成平面网格
主要为大家详细介绍了Unity3D动态生成平面网格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Unity3D跑酷游戏开发实战:物理碰撞、UI交互与状态机设计
在Unity3D游戏开发中,物理引擎与碰撞检测机制是构建交互体验的基石。Rigidbody组件负责模拟真实的重力与冲量,通过Collider触发事件,开发者可以精准控制角色受伤、加分等逻辑。UGUI系统则是连接玩家与游戏世界的桥梁,按钮事件绑定、动态文本刷新、多面板切换构成了完整的操作反馈闭环。而动画状态机与游戏状态管理,则能让角色动作、场景流程和逻辑切换变得清晰可控,避免代码混乱。这些技术并非孤立存在,而是共同支撑起一个结构严谨、可运行、可扩展的小型游戏项目。本文以经典的“小恐龙跑酷”作业为例,逐步拆解从
Unity3D制作《吃豆人》小游戏(Pac-Man)
用Unity3D制作的2D小游戏实例,内含可执行文件exe,可以直接玩,适合新手。 交作业的不二自选。 下载打开就能运行,个人运行环境是2019版本的Unity3D
一个使用Unity3D实现的2D无尽跑酷游戏。
一个使用Unity3D实现的2D无尽跑酷游戏。
4种动物-2d游戏1.0unity3d 资源 UnityPackage包
4种动物-2d游戏1.0unity3d 资源 UnityPackage包


