论unity中UI工具与GUI函数
1.前言
当我们在unity中创建设计项目时,难免会遇到一些想表述文字的时候(比如说显示得分之类的),这时候我们就有俩种方法来达成目的:
1.unity中自带的ui工具。
2.c#中的OnGUI函数。
而本文我们就来阐述两者之间的区别。
2.创建方式
当我们想运用一种工具时,第一步就是创建它。
而UI工具是unity中自带的一种工具,那么创建方式就很简单,只需要在Hierachy中右键找到ui,然后创建其中的Text即可。如下图所示。
然后unity会自动帮我们创建分类,如下图。
单击Text后我们便可以在属性中对其进行设置,如下图。
其中包括一些位置,大小,文字内容等方面。
而Unity的GUI这东西如果学过C#的话,应该很好理解的,可以认为是.net的用户交互控件,实际上应该也就是这个样子,类似于Button,Label,Textbox….的这些东西在GUI里面都有。使用的时候也可以随时添加删除。其以代码的形式存在,所以本身不需要创建。
3.作用对象
在上面我们提到UI其实是一种unity自带的工具,而GUI是c#中的函数。所以说在我看来两者之间最大的区别可能就是作用对象了。
对于UI工具来说,其本身就是一种工具,并不需要另一种工具来作为作用对象。
而对于GUI函数来说就完全不一样了,GUI函数终究是一种函数,它需要一种载体来使其可以表示出来,而不只是作为代码的形式存在。所以对于GUI函数的作用对象,我们一般是把它放在camera(摄像机)上,来跟据摄像机的大小等一些属性来对其进行限制与调整。
举个例子,下面是针对植物大战僵尸中可种植物的菜单设置。代码如下。
void OnGUI() {
GUILayout.BeginArea(new Rect(Screen.width/2-100 , -7, 200, 100));
GUILayout.BeginHorizontal("box");
GUILayout.Box(new GUIContent(SunCollect.score.ToString(), sunImage));
foreach (BuildInfo bi in plants) {
GUI.enabled = SunCollect.score >= bi.price;
if (GUILayout.Button(new GUIContent(bi.price.ToString(), bi.previewImage)))
cur = bi;
}
GUILayout.EndHorizontal();
GUILayout.EndArea();
}
其中包含了对文字位置,文字图像,以及文字内容的等代码。
将其放入camera中。效果如下。
4.尾言
本文衔接上一篇文章,都是针对游戏《植物大战僵尸》(自制版)一部分所写的感想,但有一点问题,就是图像显示方面似乎有些不尽人意,在下一篇文章中我们就来谈谈如何对其进行改进。
感谢各位的观看,本文为本人自己的看法。如有错误,还请斧正。