Unity3d的GUI排版教程 2

2021-06-18 04:51:42 字數 1395 閱讀 8560

在上一節中,我們大致了解了gui與guilayout存在的一些差異。在這一節中我會舉一些例子,來為大家詳細講述利用guilayout做ui排版的好處。

我首先在指令碼的ongui()函式體中,新增兩段按鈕**,一段是gui.button如下所示:

gui.button(new rect(100f, 100f, 100f, 50f), "hello gui.button");

以及一段guilayout.button**如下所示:

guilayout.button("hello guilayout.button");

在整個輸入的過程中,我們發現,gui.button需要我們必須為該物件配置乙個rect引數,來設定按鈕的位置100f, 100f和它的尺寸大小100f, 50f,以及按鈕上顯示的文字"hello gui.button"。但guilayout.button並不要求我們輸入限制性能容(位置、大小),只要我們輸入顯示內容"hello guilayout.button"。執行之後的效果如下所示:

大家可以看到gui.button由於設定的寬度不夠,不足以裝下裡面的文字,而使得裡面的部分文字被剪裁掉了。而guilayout.button不需要設定位置和寬度,它在顯示的時候,則是以剛好能容納下全部文字的寬度來顯示的。這和我們網頁中的沒設定樣式的div是不是相似?那u3d裡面有沒有類似 div的標籤呢?用來承載我們切片區域,設定切片區域的大小和位置呢?答案是:有的!它就是beginarea家族,主要包含了 guilayout.beginarea、guilayout.beginvertical、guilayout.beginhorizontal這三大要素。它們和div很類似,對應著三個各自的結束標籤guilayout.endarea、guilayout.endvertical、 guilayout.endhorizontal,中間包裹這該塊內所需要顯示的內容。guilayout.endarea預設情況下,會讓內部成員在沒有設定樣式的情況下,寬度等於自身的寬度-自身的padding畫素-內部成員的margin畫素。

對於大多數初學者,可能會有點不太明白padding、margin是什麼東西,那麼在這裡筆者借用css盒子裡面的一張圖來說明一下,如下圖所示:

簡單來說,margin、是用來規定該塊從邊框到另外乙個塊之間的距離的。而padding是用來規定邊框到內部填充之間的距離的,這個概念尤為重要,因為對於像button這類的空間來說,只有「content」填充區域才會有熱點觸發,其他區域,即便你能看到,也不會有觸發。在web中,大家可以寫乙個css來完成對改標籤的盒子樣式的個性化設定,那如何做到在u3d裡面對盒子樣式的設定呢?答案很簡單,u3d把所有的gui元素樣式都整合在了**樣式控制項裡面中,您可以使用guistyle來單獨給該object上面的gui新增乙個樣式。也可以用樣式集合控制項guiskin來完成對多個 guistyle的統一設定,包括預設樣式box、button等等。下一節我為大家詳細的來做乙個例子,大家就明白了。

unity3D之GUI之TextField控制項用法

textfield控制項主要用於監聽使用者的輸入資訊,獲取的資料資訊都會轉換成字串型別,在此需要注意的是,當輸入的是數字或者其他型別需要轉換時,應考慮異常等情況的發生。pragma strict private var editusername string private var editpass...

Unity3D學習筆記 GUI高階元件

unity3d中的高階控制項都是由gui類引出的,高階控制項是由系統實現的,所以效率很高,但也可以自己實現,優點是任意修改靈活性高。一 label控制項 用於展示一段文字的控制項。可以輸入字串,也可以是貼圖。使用方法 gui.label rect 100,40,150,30 當前螢幕的寬度 scre...

Unity3D嵌入WPF教程

建立乙個 類庫工程 新增 windowform 使用者控制項 usercontrol 1 引入 untiywebplayer com 元件 在工具 選擇工具箱中找到unitywebplayer.dll並新增 2 在使用者控制項中新增unitywedplayer控制項 在工具箱中直接拖拉即可 2 將 ...