Unity中,如何从代码中生成UI

从代码中动态生成UI,这里有一个unity的历史问题要说明。从Unity4.6开始,Unity已经开始使用新版的UI系统。我是一个最近才转到Unity领域的新人,使用的最早的版本就是Unity4.6。但在Unity4.6之前,UI的控制主要由脚本控制,并且放在OnGUI这个函数中。这种方式缺点很明显,游戏逻辑跟界面代码住在同一个地方,可想而知有多乱。Unity4.6之后放弃了这样的方法,引入了新的UI系统,你几乎不用写任何代码就可以做一个UI出来,简直就跟使用PS一样,当然说不用写任何代码还是夸张了点,相应还是要交给代码来实现的。
在UI系统中,最然我兴奋的就是UI的动画系统,真的是一个非常棒的体验,你可以通过给UI添加动画,做出漂亮的动画效果。讲的离题了,还是回过头来说说从代码中创建UI吧,虽然Unity现在的UI系统非常的棒,可以做出各种UI,但是很多时候我们想要动态的UI,这里的意思是有时候需要根据获得数据,动态生成我们想要的UI。在老的版本中我们可以用GUI.Button(new Rect(10, 10, 150, 100), "I am a button"),立马生成一个按钮。但是这样的代码是很难维护的,我们可以使用预制,对,没错,prefab.
为什么要用预制,以及怎么用,官方给出了他的解释,我赞同官方的观点。
总的来说分为下面几步:
1.首先在场景中创建好你的UI。
2.设置好这些UI在场景中的布局。
3.把需要做成预制的部分拖到Project 窗口中,自动生成预制,你要的预制就做好了。


这里面会用到Instantiate()这个接口,通过它我们把预制克隆并且放到场景中去。

下面看实验:
1.首先在你的unity里面做好界面,这里做了一个技能的测试按钮,按钮颜色为红色

创建好你的UI

2.把你要动态生成的UI拖入Porject视图中,让他变成预制,因为我们想要动态生成很多技能按钮,那么我们就把这个按钮做成预制,需要的时候构建它的实例。

拖入Project视图,创建预制,可以把场景里面的界面删除

3.在代码中动态构建UI,在代码中动态生成想要的按钮

动态创建UI

   for (int i = 0; i < models.Length; i++)
        {
            Models[i] = models[i];
            SkillButtons[i] = (Instantiate(ButtonHead) as GameObject);
            SkillButtons[i].transform.SetParent(transform, false);
            SkillButtons[i].transform.position += new Vector3(0.0f, uistartPosInVertical*i, 0.0f);

        }
通过一个for循环,我动态生成了models.length个技能按钮
具体步骤可以参考Unity官网的说明:
http://docs.unity3d.com/Manual/HOWTO-UICreateFromScripting.html
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值