2012年7月5日 星期四

Unity全新GUI介面

現在大部分的人都在忙著Unity 4.0 發表的準備, 我們團隊則是專注在下一版的新GUI研發. 我們覺得是時候來分享一下相關資訊, 讓你知道一下我們到底在幹嘛! 以下是我花一天的時間整理的東西:

基礎
替遊戲設計GUI的時候, 大部分會假定外觀會從視窗表現, 我們認為彈性很重要, 所以我們所有東西都使用動畫. 讓我們看這個有點呆板的按鈕. 這個按鈕含有三個元件, 背景圖, 框線與標籤. 新的GUI編輯器, 這些東西會由不同的元件構成.

這個設計很強大, 因為他可以讓你替不同的元件設計動畫, 按鈕的元件可以根據使用者的操作播放動畫, 每個元件可以透過GameObjects的階層來啟動. 所以, 如果你希望滑鼠滑過去的時候添加某聲音 , 你只需要把某聲音檔拖曳到GUI Editor, 當你記錄滑鼠滑過的狀態時. 不需要寫程式碼.

位置
我們會盡可能地讓你在Unity裡面很順暢地工作, 這樣的概念也放到了新的GUI系統. 我們從頭建立了完整的編輯器, 簡單拖曳您新組裝好的按鈕到GUI editor, 移動, 縮放大小, 重新指定子母關係, 設定動態. 希望設定常用UI, 你只需要丟到工具列即可.

為了要加強編排的彈性, 我們採用了類似Apple的縮放控制. 每個GUI元件都有自己的大小, 相對於其母元件, 以及一組的縮放控制, 讓你知道如何控制母元件的大小與母元素結合. 這是很棒的方法來處理不同長寬比的, 具現代感的東西.

3D GUI
3D群組讓你的UI元件可以有完整的透視變形, 能夠讓UI設計變得更具層次. 你可以看到把這個概念用在雷達元件設計上, 每個小東西都有它自身的3D動畫表現.

排序
timelines提供了物件排序很清楚的控制, 最上面一層就是放在最上面. 你可以在timeline上很容易地往上或是往下拖曳.

用在GUI裡面的紋理貼圖會自動地避免重疊, 為了要減少draw cal, l 我們寫進了一個動態的重疊偵測功能. 它會找到哪個元件在切換, 避免深度的改變, 在上圖的那個GUI只花了5個draw calls.

操控
新的GUI系統提供你大量的標準控制器, 以及幾個細緻的按鈕開關, 專為行動裝置遊戲所設計. GUI系統包含了對多點觸控的完整支援, 為了要對用戶按壓互動的反應, 你可以很簡單地拖曳一個GameObject, 然後選怎用怎樣的方法去呼叫, 從C# 的角度, 這只不過是個代理人, 你也可以從code的方式掛上去. 所有內建的元件都可以用script控制.

如果你想要寫你自己的控制器, 你可以從GUIBehaviour來改, 這讓你可以callback OnMouseOver, OnMouseOut, OnKeyDown, OnMouseDown...等等. 所有的控制器都可以使用動畫系統以達到最大彈性, 你可以模擬, 幾乎可以從code中做出任何你想做的東西.

我想說的就這樣! 關於這個GUI我真的超級High的! 很有創意也很有趣! 我接下來會花點精力在修bug上, 這樣我們才可以把這小孩交到您的手上.

如果您有任何問題,請在以下留言, 我會盡可能地回答您.

繼續寫程式!

Nich敬上


Unity 3D 台灣代理請洽 奇銳科技 (02)2557-3321

[相關資訊]

2 則留言:

匿名 提到...

請問這是Unity 4.0會有的功能嗎?

Hammer B. Chen 提到...

根據作者說法, 應該是4.1或是4.2才會放進去的功能.