Unity3D之Prefab的制作
来源:互联网 发布:八爪鱼淘宝采集器贴吧 编辑:程序博客网 时间:2024/05/17 23:02
原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【Unity3D(AR/VR) 334163814】【Unity3D(游戏) 119706192】 本文链接地址: 动态实例化Prefab
之前写过一篇“Unity3D NGUI动态创建按钮”不少人按照我文章中介绍的方法来动态创建按钮,文章那种做法并不好。现在写一遍新的文章来教大家用Prefab的方式来动态创建NGUI按钮(也可以是任何GameObject)。
1.首先要预制好我们要创建的物体:
a.首先创建一个游戏物体。
b.自定义样式并添加自己需要的脚本。
我添加了一个测试代码,当点击按钮的时候把按钮文字替换为buttonID。
- using UnityEngine;
- using System.Collections;
- public class TestButton : MonoBehaviour
- {
- public int ButtonID = 0;
- //点击把按钮问题替换为ButtonID
- void OnClick()
- {
- UILabel buttonLable = GetComponentInChildren<UILabel>();
- buttonLable.text = ButtonID.ToString();
- }
- }
c.讲制作好的物体创建为Prefab。
2.动态创建脚本。
a.脚本。
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public class TestCreat : MonoBehaviour
- {
- public GameObject ButtonPre;
- public int CreatCount = 3;
- public float PosY = 0;
- public float Padding = 40;
- //存储所有动态添加的按钮
- [HideInInspector]
- public List<TestButton> Buttons = new List<TestButton>();
- void Start()
- {
- CreatButton();
- }
- void Update()
- {
- //按下空格键,删除id为1的按钮
- if (Input.GetKeyDown(KeyCode.Space))
- {
- //不能在foreach里面直接删除元素,所以把要删除的元素先记录下来,foreach结束后再删除。
- TestButton deleteTB = null;
- foreach (TestButton item in Buttons)
- {
- if (item.ButtonID == 1)
- {
- deleteTB = item;
- break;
- }
- }
- if (deleteTB != null)
- Destroy(deleteTB.gameObject);
- }
- }
- void CreatButton()
- {
- Buttons.Clear();
- for (int i = 0; i < CreatCount; i++)
- {
- Buttons.Add(AddButton());
- }
- }
- TestButton AddButton()
- {
- GameObject go = NGUITools.AddChild(this.gameObject, ButtonPre);
- go.name = "动态" + Buttons.Count;
- go.transform.localPosition = new Vector3(go.transform.localPosition.x, PosY + Padding * Buttons.Count, go.transform.localPosition.z);
- TestButton tb = go.GetComponent<TestButton>();
- tb.ButtonID = Buttons.Count;
- return tb;
- }
- }
b.赋值。
将TestCreat脚本绑定在要创建动态物体的父级。
将做好的Prefab绑定到ButtonPre属性。
之后隐藏掉场景内手动设置的那个原始物体。
3.结果测试。
a.开始运行,创建了CreatCount个按钮,分别取名,Y轴由PosY开始,每个按钮间距Padding。
b.点击按钮,按钮Label改变为ButtonID。
c.按下空格键删除ButtonID为1的按钮。
0 0
- Unity3D之Prefab的制作
- Unity3D研究院之Prefab里面的Prefab关联问题
- Unity3D学习笔记之三Prefab组件的使用
- Unity3D学习笔记之六创建更多的Prefab
- Unity3D中Prefab的使用
- Unity3d中加载资源prefab的方法
- Unity3D中预制体Prefab的应用
- unity 场景的制作prefab 摆东西
- Unity3d十 Unity3D中的预制件(Prefab)的创建和使用说明
- Unity3D学习笔记之五为Prefab添加材质
- unity3d之Assetbundle打包预设Prefab和场景Scene
- unity3d 动态加载 prefab
- Unity3D中Prefab
- Unity3D中的Prefab使用方法
- Unity3D中Prefab
- [Unity3D]预设Prefab与实例Instantiate的基本使用
- Unity3D中的预制件(Prefab)的创建和使用说明!!!
- Unity3D学习笔记03:预设Prefab的使用
- Java中使用WebService实现简单的天气预报功能
- poj2785
- 【搜索】 ZOJ 3864 Quiz for EXO-L BFS
- 编程笔记
- android中activity之间数据通过Intent的传递
- Unity3D之Prefab的制作
- 38-语言入门-38-Coin Test
- 39-语言入门-39-字母统计
- 数据结构实验之链表四:有序链表的归并
- hdu2586 How far away Tarjar离线处理lca
- windows编程 win32项目 绘制小球自由落体反弹、键盘控制小球运动
- 华为荣耀总裁刘江峰正式离职:不想错过新浪潮
- 40-语言入门-40-C小加之随机数
- 神经网络堆叠/进化故事