論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.尾言
本文銜接上一篇文章,都是針對游戲《植物大戰僵尸》(自制版)一部分所寫的感想,但有一點問題,就是影像顯示方面似乎有些不盡人意,在下一篇文章中我們就來談談如何對其進行改進,
感謝各位的觀看,本文為本人自己的看法,如有錯誤,還請斧正,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255301.html
標籤:其他
上一篇:陣列小游戲---火把螢石
下一篇:簡化版掃雷詳細解
