本書討論了Unity UI設(shè)計的完整內(nèi)容, 并通過大量的實例以及應用指導, 以使讀者快速掌握組件的操控和布局, 進而構(gòu)建個性鮮明的UI內(nèi)容。
隨著新時代的到來,Unity技術(shù)也取得了長足的進步,并針對Unity項目提供了全新的UI改進系統(tǒng),其開源特征使得每一名開發(fā)人員均可訪問UI的內(nèi)部流程。
這無疑是一項大膽的嘗試,千呼萬喚后全新的UI系統(tǒng)終于得以面世。其間,開發(fā)周期的延誤以及不斷的改進行為使得該系統(tǒng)的上市時間遙遙無期,開發(fā)人員只得使用現(xiàn)有的遺留GUI系統(tǒng),或者付費使用相對高級的GUI系統(tǒng)(例如NGUI)。
在經(jīng)歷了Beta版發(fā)布后的漫長等待后,新系統(tǒng)最終問世。該系統(tǒng)得到了全面的改善,盡管某些領(lǐng)域尚有所欠缺(畢竟系統(tǒng)仍處于開始階段)。
本書圍繞這一新技術(shù)展開討論,以便讀者理解各組件的功能、整合方式以及應用方法,進而在項目中實現(xiàn)全新的UI內(nèi)容。除了屏幕菜單及選項菜單之外,本書還將在3D游戲場景中創(chuàng)建各類UI元素。
Unity不僅推出了新的UI系統(tǒng),開發(fā)人員還可訪問源并設(shè)計UI元素、理解事物的構(gòu)建方式、擴展現(xiàn)有的控制項,甚至創(chuàng)建自己的UI內(nèi)容。具有冒險精神的讀者,還可向Uuty發(fā)布補丁或新特性,對Unity加以改進。
據(jù)此,讀者可組織設(shè)計內(nèi)容及實現(xiàn)方式。更為重要的是,Unity對這一切提供了免費的使用權(quán)限。
時不我待,本書將引領(lǐng)讀者探索全新的UI世界。
本書內(nèi)容
第1章回顧了4.6版本之前的Unity3D所涉及的相關(guān)內(nèi)容,以及4.6版本之后所推出的某些功能,并整體闡述了所涉及的新特性。
第2章涵蓋了新UI系統(tǒng)的核心內(nèi)容,即Canvas和RectTransform,并構(gòu)成了該系統(tǒng)的基礎(chǔ)部分。
第3章中,UnityUI引入了堆載(heap-load)機制,以此滿足相應的UI需求,例如按鈕、復選框、滾動區(qū)域及布局遮罩,本章將深入討論大多數(shù)控件的制作方式。
第4章詳細介紹了UnityUI的錨定系統(tǒng),以及如何實現(xiàn)相應的布局/設(shè)計方案。
第5章介紹了UI新系統(tǒng)中最值得期待的部分,即如何構(gòu)建透視UI布局,并將UI元素作為3D對象添加至某一場景中。
第6章考查了IJI框架背后的編碼方式,并對Event System和UIuty Event框架予以介紹;實現(xiàn)一個UI系統(tǒng)的開源項目,并以此展示基于新型UI的Unity編碼方式。
本書附錄展示了一個3D示例場景,該示例在第5章中出現(xiàn),其中包含了相應的UI元素。鑒于該示例并非本書重點內(nèi)容,因而作為附錄內(nèi)容供讀者有選擇地閱讀。同時,本書在線資源中也提供了相應的下載包,以供關(guān)卡設(shè)計人員使用。
軟件需求
本書主要涉及下列應用軟件:
Unity3DV4.6+。
建議使用Visual Studio 2012(Express,Pro或更高的版本)。適用讀者
本書要求讀者理解Uruty中的核心功能,并掌握其中的C#腳本機制(對于UnityUI系統(tǒng)中的核心編輯器部分,本書則不作要求)。通過本書的閱讀,相信讀者能夠高效地利用UI特征集。
本書約定
本書涵蓋了多種文本風格,進而對不同類型的信息加以區(qū)分。下列內(nèi)容展示了對應示例及其具體含義。
文本中的代碼、數(shù)據(jù)庫表名稱、文件名稱、文件名、文件擴展名、路徑名、偽URL、用戶輸入以及Twitter用戶名采用如下方式表示:
“腳本將添加至名為Scripts的文件夾中;場景則添加至名為Scenes的文件夾中”。
第1章 回顧與展望
1.1 發(fā)展狀況
1.2 通用控件特性
1.2.1 分組控件
1.2.2 命名控件
1.2.3 獲取焦點
1.2.4 工具提示
1.2.5 Window控件
1.3 GUI樣式和皮膚
1.4 GUI事件和屬性
1.5 布局控件
1.5.1 BeginArea
1.5.2 水平和垂直布局組件
1.6 Asset Store
1.7 重新設(shè)計系統(tǒng)
1.8 新的布局方案
1.8.1 Rect Transform控件
1.8.2 Canvas控件
1.8.3 布局組件
1.8.4 遮擋機制
1.9 新控件
1.10 新UnityEvent系統(tǒng)
1.11 控件的擴展性
1.12 動畫效果
1.13 Asset Store中的資源
1.14 MenuPage
1.15 本章小結(jié)
第2章 構(gòu)造布局
2.1 Rect Transform
2.1.1 Rect工具
2.1.2 Rect Transform組件
2.1.3 縮放Rect Transform
2.1.4 Canvas
2.2 自動布局和選項
2.2.1 Horizontal Layout Group
2.2.2 Vertical Layout Group
2.2.3 Grid Layout Group
2.2.4 布局選項
2.3 分辨率和縮放行為
2.3.1 Constant Pixel Size
2.3.2 Scale with Screen Size
2.3.3 Constant Physical Size
2.4 UnityEvent系統(tǒng)
2.4.1 光線投射機制
2.4.2 輸入模塊
2.4.3 輸入事件
2.4.4 事件觸發(fā)器
2.5 本章小結(jié)
第3章 控制行為
3.1 概述
3.1.1 添加代碼
3.1.2 構(gòu)建項目
3.1.3 內(nèi)建圖像中的警告消息
3.2 文本處理
3.2.1 簡單的FPS控件
3.2.2 添加輸入交互行為
3.2.3 陰影效果
3.3 顯示圖像
3.3.1 圖像類型
3.3.2 向混合結(jié)果中添加動畫
3.3.3 RawImage上的單詞
3.4 按鈕控件
3.4.1 選擇操作
3.4.2 事件處理
3.4.3 最終的菜單效果
3.5 行進方向
3.5.1 分組選項
3.5.2 動態(tài)事件屬性
3.6 滑塊操作
3.7 滾動欄
3.8 導航
3.9 著色器簡介
3.10 本章小結(jié)
第4章 錨定系統(tǒng)
4.1 設(shè)置錨點
4.2 設(shè)置和調(diào)整
4.3 拉伸和變形
4.4 縮放操作和分辨率
4.4.1 與默認的常量值協(xié)同工作
4.4.2 縮放視圖
4.4.3 獲取物理尺寸
4.4.4 選取最終方案
4.5 本章小結(jié)
第5章 屏幕空間、世界空間和相機
5.1 Canvas和相機
5.1.1 屏幕空間和世界空間
5.1.2 渲染相機
5.1.3 事件相機
5.2 透視
5.3 構(gòu)建游戲
5.3.1 前提條件
5.3.2 2D精靈對象
5.4 屏幕空間相機的狀態(tài)欄
5.4.1 Canvas中的內(nèi)容
5.4.2 死亡狀態(tài)
5.4.3 相機設(shè)置
5.4.4 添加深度效果
5.5 進一步討論
5.5.1 定位Canvas
5.5.2 效果示例
5.5.3 構(gòu)建UI并將其置于場景中
5.5.4 縮放問題
5.5.5 較好的方案
5.5.6 Event Cameras的最后幾點說明
5.6 本章小結(jié)
第6章 與UI源代碼協(xié)同工作
6.1 了解Event System
6.1.1 事件系統(tǒng)循環(huán)
6.1.2 狀態(tài)控制
6.1.3 光線投射編組
6.2 與事件協(xié)同工作
6.2.1 使用參數(shù)
6.2.2 內(nèi)建事件接口
6.2.3 執(zhí)行事件
6.3 構(gòu)建自定義句柄或事件
6.3.1 自定義事件的數(shù)據(jù)結(jié)構(gòu)
6.3.2 自定義事件接口
6.3.3 自定義事件靜態(tài)容器
6.3.4 處理自定義事件
6.4 滾球示例
6.4.1 Droid腳本
6.4.2 警示壓力板
6.4.3 管理警示系統(tǒng)
6.5 事件系統(tǒng)小結(jié)
6.6 操作示例
6.7 訪問源代碼
6.7.1 代碼庫
6.7.2 獲取副本
6.7.3 下載代碼
6.7.4 更新操作
6.7.5 解決方案
6.7.6 向項目中添加UI個人版本
6.7.7 將調(diào)整結(jié)果置于Unity中
6.8 本章小結(jié)
附錄A 3D示例場景