论unity中UI工具与GUI函数

论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.尾言

本文衔接上一篇文章,都是针对游戏《植物大战僵尸》(自制版)一部分所写的感想,但有一点问题,就是图像显示方面似乎有些不尽人意,在下一篇文章中我们就来谈谈如何对其进行改进。

感谢各位的观看,本文为本人自己的看法。如有错误,还请斧正。

猜你喜欢

转载自blog.csdn.net/yifengyun2/article/details/113456137