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