2014年11月27日 星期四

Unity 4.6全球發布!UI系統開源!

作者:NA'TOSHA BARD 原文網址
翻譯:小七


今天是西方的感恩節,感謝Unity 的所有開發者長久以來堅定地選擇和陪伴!我們在這一天,將Unity 5 前最後的一個大版本回饋給用戶,很高興宣布讓大家期待已久的Unity 4.6今日發佈!

Unity 4.6有許多功能,包括作為主角推出的新 UI 系統 。我們知道讓大家久等了,因為我們需要時間來與大家合作測試UI系統,並收集反饋意見,最終發佈一個讓我們自豪也讓大家滿意的UI系統。

Unity 4.6還加入了對Andorid-x86系統的支持,現在你可以選擇構建目標平台為FAT、x86或ARMv7。這代表你將可以導出應用到Android-x86設備上,例如新的Google Nexus Player

開源計劃的下一步

我們已經將UI系統的源碼發放至 BitBucket。使用附帶的專案文件,你可以直接構建一個UI模組來替代Unity 自帶的UI系統。想了解如何開始構建你自己的UI模組,請查閱裡面的README文件。如同往常一樣,我們的開源組件和UI系統都是基於 MIT/X11許可協議發布的。

由於源碼已經開放了,你可以隨心所欲地按照你想要的方式來自定義和改善UI系統(同時也可以與他人分享你所做的改善)。我們非常樂意與社區成員合作,請查閱 版本庫中的README 文件 來了解有關提交請求的條款內容。

想了解更多關於我們的開源計劃和產品信息,請查閱早期發布的文章: Unity 更多的開源措施 以及為我們的開源項目貢獻你的一份力量

趕緊行動吧!創造別出心裁、令人驚艷的內容來吧!

對64位iOS ARM的支持即將就緒

我們已在這裡宣布,我們計劃於2015年1月在Unity 4.6.x的版本中,加入支援64位iOS ARM功能的測試Beta版本。

蘋果在10月20日宣佈,從2015年2月1日開始,新上傳至AppStore的iOS應用都必須加入對64位iOS系統的支持。我們了解很多開發者使用Unity 4.x的版本開發游戲的過程已接近尾聲,我們也正致力於為移植到Unity 4.6.x版本提供完美的解決方案。

由於存在大量的程式重用,在Unity 4.6.x系列中對64位iOS ARM的實行會與Unity 5中的一致。

2014年11月24日 星期一

Unity將支援Apple 64位元 iOS系統

作者:VILMANTAS BALASEVICIUS 原文連結

根據消息從2015年2月1日起,上傳到App Store的iOS App必須支援64位元系統,並且必須使用Xcode6或更高版本的iOS8 SDK編譯。為了讓你的專案支援64位元,我們建議使用Xcode預設的發佈設定“Standard architectures”,就能編譯出同時支援32位元和64位元的二進制檔案。

這對開發者來說代表著什麼呢?從明年二月開始,新發佈的游戲(或應用)必須使用iOS8 SDK及相容新iOS設備中的64位ARM晶片。

好消息是Unity 已經確定支援iOS8,過去的幾個月裡,我們也一直努力為64位元的iOS尋找解決方案。最終我們選擇了IL2CPP。

什麼是IL2CPP?

你可能知道我們一直開發IL2CPP已經有一段時間了,在Unity中它為開發者與系統之間的互動帶來了一定的靈活性。我們也期待能給玩家體驗帶來大幅的性能提升。

IL2CPP的出現是當我們正探索如何支援WebGL的時候,那時我們在研究一些能有效支援各種平台的新方法。它結合虛擬機的預先編譯,將程式集轉換為C++,同時利用C++編譯器產生二進位檔案。讓游戲和應用程式可以更有效率。這使我們可以同時為所有支援的平台增加新的核心功能,更新也更有效率。想完整了解這技術,請查閱文章-《Unity腳本的未來》。

我們看到了WebGL平台有很好的成果,同時也非常期待Unity支援的平台都能有大幅的性能提升,包括正在開發中的iOS平台。

IL2CPP什麼時候可以運用?

IL2CPP已用於WebGL平台發佈,查看Unity官方提供的WebGL範例就可以看到它的實際應用。繼WebGL之後的下一個平台就是iOS。在接下來的幾周,第一個透過Unity5使用IL2CPP建構的iOS ARM64位alpha版將送到我們的內測團隊。

通過測試後我們會有Beta版給預購的開發者,具體的時間取決於測試的進度。我們應該會在2015年1月開放測試。Unity5裡官方發步支援iOS ARM64位元的新功能Beta版還要看Unity5正式版的時間,所以暫時無法確定最終時間。

那關於Unity4.6呢?

Unity4.6已經進入收尾期,所以它很快可以和大家見面。目前的計劃是在2015年2月之前將iOS ARM64位的Beta版放入4.6.x系列中(指IL2CPP)。我們了解很多開發者已經使用Unity4.x的版本開發了完整的游戲,所以我們會為移植到Unity4.6版本提供完美的解決方案。由於存在大量的代碼重用,在Unity4.6.x系列中對IL2CPP的作法會參照Unity5來進行:所以腳本復雜程度不要太複雜都能正常運作。

那Unity4.6之前的版本呢?

我們不會為Unity4.6之前的版本加入64位iOS系統的支援。由於底層差異過大,放到Unity之前的版本提高了許多難度。為了儘快加入64位iOS系統的支援,我們決定只專注於4.x系列的最後一個版本-Unity4.6。如果你的游戲使用Unity4.6之前的版本開發,那麼為了將游戲順利上到AppStore,你需要將Unity升級到4.6.x或Unity5。請注意,已經發佈到AppStore的32位iOS App可以直接使用Unity4.x或Unity5進行更新。AppStore的iOS游戲在明年2月之前都不要求必須支援64位元。

能按時移植完我的游戲嗎?

我們的宗旨就是幫助你們成功,所以我們也在不停的努力爭取讓一切准備就緒。而最好的辦法就是盡早開始測試,因此我們鼓勵大家在明年1月盡快升級並獲取Beta版測試。

如果你的項目非常復雜,想完美的移植它可能需要更多的時間,如果你不趕在二月之前移植完成,例如多兩個月的時間,那就沒什麼好擔心的了。

我們非常欣慰IL2CPP完成它的任務!

這將不僅僅對遊戲性能帶來翻天覆地的變化,同時對我們的開發進度以及在社群中與你們分享新功能的速度也將產生巨大影響。

常見問題:

1. 這對我已發佈的App來說有什麼影響?

短期不會有影響。在2015年2月1日之前Apple不會移除已經上傳到AppStore的App,可以繼續賣,就算這些App不支援64bit。

2. 在那之後我需要更新我的App嗎?


目前Apple官方給出的說法是在2015年2月1日之前已經上線的游戲和應用不需要對64位元iOS系統支援。很重要的一點是,既然Apple官方是這麼說的,那麼不排除它會在之後的某個時候要求所有的應用都必改成64位元。

3. 如果我想在2月1日之後發布呢?

那你就必須按照Apple的要求了。新的App必須支援64位元iOS系統,才能更合理的利用新的iOS設備。想了解有關Apple開發者的訊息,請到https://developer.apple.com/contact/.

2014年11月23日 星期日

Unity 5移植案例 - 不為人知的RUST移植之旅

作者:CHRISTOPHER POPE 原文連結
翻譯:小七 、JC24

Rust是由Facepunch Studios公司用Unity開發的一款第一人稱生存遊戲,開發團隊最近忙於將Rust移植到Unity 5。成果如何?本篇將分享他們不為人知的轉移心得!

Unity一直在為Facepunch Studio的移植工作從背後提供支援,他們的經驗非常具有分享價值。所以我們對創始人Garry Newman進行了一個深入的採訪,希望對Unity的開發者有所幫助。

Q:Unity對Rust的成功發揮了多大的作用?

A:這樣說吧,除Unity外我們使用的另一個引擎就是Source Engine,它與Unity有著天壤之別。Unity會即時更新你改變的貼圖、材質或模型。你可以在另一台顯示器上打開3DS Max或Photoshop進行編輯,然後馬上可以在Unity中看到這些更改。每次操作都能節省約一分鐘的時間,在過去的6個月裡為我們省下的時間不計其數。而在SourceEngine中,每次更改之後都必須退出遊戲再重新進入才可以看到變化。 在Unity中進行微調的過程其實非常有趣,而且你可能更傾向於邊實驗邊探索不同的解決方式。

Q:將Rust移植到Unity5花費了多長時間?

A:其實真正花在移植上的時間並不多,大概就兩個小時。Unity自動更新了我們的所有程式,這是瞬間完成的。一些從AssetStore下載的插件還有些問題,沒有被正確更新。我們已經找了插件的開發者來幫我們更新插件,所以這個問題也解決了。

Unity5的新系統給了開發者更多控制插件和dll庫的自由。一開始,我們還有些吃驚,但很快我們就明白了,這只是代表我們不必再將插件和庫放進特定的文件夾而已。

當然,如果你要使用Shader之類的新特性,那你就得完整的檢查專案所有內容並更新材質和其它東西。如果你希望它和Unity4一樣,只需升級就好。

Q:使用新的標準著色器(Standard Shader)和Lighting系統,你們的感受如何?

A:美術們意識到這是一個全新的系統。事實上這是一種新的工作方式。他們使用了新工具Substance Painter,因為可以產生更準確的結果。當他們搞清楚弄明白,就能利用它們產生好的結果,而且制作漂亮場景也不用花費太大功夫。


Q:你最想通過Unity5對《腐蝕Rust》作出什麽樣的改變?

A:我們想了解材質看上去到底能有多惟妙惟肖,所以我們對動態反射之類的東西做了些研究,並且幾乎用到了新的著色器中的所有新功能。

現在我們仍然持續著不斷調整材質。如果我們覺得截圖中的材質看起來效果不理想就會修正它。

Q:你怎麽看待Unity 5中的其它工作流程?

A:說真的它們看起來都差不多,但還是遇到些小麻煩,例如幫動畫增加事件。但音效類的素材載入效率變好。而材質類的素材一開始載入可能會比較複雜,但是了解整個系統及工作原理後,過程就容易多了。新的著色系統在制作材質方面真的非常出色,因為你不用再選擇著色器了。如果你想使用法線貼圖,只要加入就可以直接用了。

Q:談到音頻相關內容,我們在這方面已經有了巨大的改進,能談談你的使用感受嗎?

A:說實話,我們才剛開始使用。現在我們只是用它來平衡特定音效的音量,例如腳步聲。但當我們開始增加特效一類的東西時,它會發揮巨大的作用。我喜歡在裡面將某些參數設為變量參數,這對控制音量來說很重要。例如位於洞穴中會產生回聲等。

其實我們團隊沒有真正搞音效的人,音效系統上有一半的術語我們都看不懂,但我們會去學的。

Q:目前為止Unity5中最具影響的功能是什麽?

A:我想應該是PhysX的升級。在Rust中我們常常會超出65000個碰撞器的數量限制,所以我們不得不想盡辦法將這些碰撞器合在一起,但會很慢。現在看來沒有這個限制了,很讚! 新的PhysX系統整體來看也比過去快很多。

在Unity 4中我們遇到了很多物理相關的問題,例如你必須為每個碰撞器添加rigidbody元件。如果你移動一個靜態碰撞器,可能會增加半秒左右的延遲。而現在你可以隨心所欲地移動任何物體而不延遲了。這對我們來說非常有幫助,因為我可沒興趣去改原始碼。



Q:所以新的PhysX不僅對開發流程有益,而且幫到了開發者?

A:是啊,開發者們可能意識不到這點,但這確實有差別的。例如在舊版的Rust中,當你從一個地方移動到別處,由於我們會重新產生物理碰撞器所以通常會有幾秒的延遲。現在不會發生這種狀況了,處理有了更多的自由度。

Q:關於Unity 4到5移植你最想與大家分享的三點是什麽?

A:有一個官方影片(英文)是關於新著色系統的,它講解了所有的輸入細節。你不僅僅需要觀看影片,還要從中學有所用。

檢查你的dll庫並確保所有的設定都是正確的。

仔細閱讀Unity 5試用版頁面的升級指南,因為其中列出了所有需要注意的所有要點。

Q:最後一問,Facepunch Studio的下一步計劃是什麽?

A:幾乎和現在正在做的一樣,Rust是一個長期專案。《Garry’s Mod》推出也將近十年了,而且我們對Rust也有同樣的使命。還有一些正在進行中的原創專案。

Q:關於Unity 5或Rust你還有其他和大家分享的嗎?

A:千言萬語終歸一句,謝謝你們創造出Unity,相比過去它真的讓我們的工作變得更容易且更有趣。

Rust是一款在Steam、PC、Mac和Linux平臺上非常熱門的遊戲。很高興能和Unity暢談Rust的故事,我也非常期待它在Unity 5中的後續開發。



同場加映

您還是不了解Rust在玩甚麼嗎?小編貼心的從Youtube找了一篇老皮的Rust直播精華篇給各位了解了解。

2014年11月19日 星期三

與開發者共同完善Unity文件

作者:ALEKSANDR原文連結

我們知道許多開發者都希望能簡單反映Unity文件的建議,所以我們做了個實驗來看看它是否可行。

為了讓我們能從社群得到回饋,我們八月的時候在官方手冊頁面增加了“Suggest a Change”功能。頁面如下:



我們想看看我們能收到一些什麼樣的反饋以及如何用最好的方式來解決它。整個八月期間我們收到了大約500條建議。下面是一些常見主題:

· C#範例及轉換錯誤(約30%)
· 建議、拼寫糾正以及開放的詢問如何改進文檔(約30%)
· 連結失效報告
· 功能需求
· 垃圾信息(約10%)

C#範例與解決轉換錯誤

我們收到的最常見的反饋就是腳本API文檔中缺少C#範例。你可以在 Unity語言這篇文中看到,我們一直在關心各語言的使用率。由於大多數的開發者都是使用C#語言,而我們為UnityScript提供的內部工具支援還缺少一些功能,所以我們對Unity 5的文檔作出了以下決定:

C#將作為文件中範例程式的預設語言

我們將會開發一款新的C#-to-UnityScript轉換工具,它將在轉換後保留原有程式的注釋(我們程式範例的另一個意見集中點),並且解決舊轉換器的其它問題。

你可能也注意到,我們的Learn Team在新的官方模組中使用的是C#語言,新的官方模組將在Unity 5中取代先前版本的Standard Packages。我們堅信轉向C#然後結合新轉換工具的支持,將為開發者提供更高品質的文件。我們所希望的就是為你們提供更有價值更實用的程式範例。

不在有失效連結

在Unity4.5的文件中,我們加入了自動連結驗證,但鑒於4.5版本中我們收到的失效連結數(約100條)回饋,我們發現它只回報了一些內部的失效連結。對於Unity 5,我們的目標是減少無效連結的數量甚至降至0,關於這點,我們已經制定了一個內部的流程以確保減少失效連結。

展望未來

我們從為期一個月的“Suggest a change”功能中得到的回饋非常有價值,我們也從中得知社區中存在大量有興趣幫助我們改善文件的開發者。目前我們正在討論未來如何執行它。我們很可能在隨後以某種方式重新推出“Suggest a change”功能。

2014年11月9日 星期日

持續強化的Unity Cloud Build - 開發者們想要的新功能

作者:NATHAN HANNERS
原文:http://blogs.unity3d.com/2014/11/06/unity-cloud-build-keeps-expanding-new-features-more-developers-wanted/



自從我們對Unity Pro的用戶提前開放了Unity官方的Continuous Build Distribution服務以來,我們一直忙於處理大家的反饋來創建最棒的雲服務。

你是否對Unity Cloud Build還一無所知?點擊查看官方網站(英文)瞭解其工作流程或觀看Unite2014的演講(英文語音無字幕):


在最近更新的版本中,Unity Cloud Build多了一些很酷的新功能,我們希望這些新功能可以幫助開發者們加快並簡化工作流程。

進階構建設定(Advanced Build Settings)

對於“Unity實驗室”系列文章裡的自訂發佈設定有興趣的開發者們,我們在Unity Cloud Build中提供了類似的功能,自動根據平臺預先處理和後製處理專案,並建立自訂腳本。也就是說,Unity Cloud Build可以執行一組用來發佈iOS平臺的指令,同時也可以執行用於發佈Android或Web平臺的指令集。


除錯 / 開發構建(Debug / Development Builds)

在開發者的強烈要求下我們增加了對.DSYM檔的支援,使用Unity Cloud Build時可以讀取.dsym來測試或除錯。


雲資料清單(Cloud Build Manifest)

Unity Cloud Build Manifest資料在建立時被植入你的專案,並提供執行時存取相關資料的金鑰。例如,為了除錯你可以在初始的畫面上顯示遊戲版本號碼。我們相信你們能善用這些資料。

外部XCODE框架支援(External Xcode Framework Support)

對於那些依賴於外部Xcode框架的開發者來說,我們建議使用Xcode Manipulation API,它能幫助你更容易整合外,它也與Unity Cloud Build能完美結合!

UNITY 4.6 測試版

我們已經在Unity 4.6 測試版加入了Cloud Build的支援。Unity 5發佈時也會支持Cloud Build。

XCODE 6

如果你使用Xcode6,Unity Build也已支援將專案發佈到iOS。

更多資訊

• 更穩定的結構
• 支援大專案
• 為專案依照平臺產生Bundle ID
• 產生.dSYM檔的下載連結(iOS)
• 可關閉郵件提醒

我們正在為Unity Cloud Build增加以上功能,Unity Cloud Build可以整合你的專案,並能很容易的將你的遊戲發佈到公司內部或外部的移動設備上。我們認為這樣的服務是非常方便且易用的。

從測試版回饋來看,開發者們也十分滿意!


想要試試嗎?

立即註冊(英文),測試期間完全免費,只要是Unity Pro的開發者並有Git、SVN或是Perforce版控的專案。

註冊之後,如果有任何經驗分享或是功能需求,都可以與我們聯繫。提出功能需求最合適的地方就是官方論壇(英文)了。如果在使用過程中遇到任何困難,也可以在技術支援(英文)頁面提出問題。

Unity Free版的用戶能使用Cloud Build工具嗎?

如果你是Unity Free版的用戶,請不要擔心。我們會在Unity Cloud Build測試結束後提供Free版本,我們正加緊趕工中。

我們非常感謝Unity所有用戶,而且我們也期待能聽到你們的想法和需求。由衷地謝謝你們!

我們也想聽聽要將你的專案建立並發佈到移動平臺,你考慮的點有哪些呢?雲構建有什麼功能會讓你願意使用呢?你又是怎麼看待未來Cloud Build與編輯器的整合呢?歡迎加入Unity 官方社群,給予我們寶貴的意見!

2014年11月4日 星期二

Unity5 中基於物理的著色器

作者:ROD LOPEZ
原文:http://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/

翻譯:“小七、子程”

什麼是基於物理的著色呢?基於物理的著色(簡稱PBS)就是以一種模擬現實中材質和光照的相互影響。直到最近PBS才能應用在即時圖形運算中。這種方法在有光源和材質接近真實的場合下優勢非常明顯。

物理著色是想建立一種友善的方式來實現不同的光照條件下的逼真效果。它模擬光線在現實中的行為,而非使用多個特定的演算模型來模擬,因為後者可能會在一些情況下失真。

為實現這種效果它必須遵循物理原理,包括能量守恆(也就是物體反射出去的光量不可能超過所接收的光量),菲涅耳反射
Fresnel reflections - 所有表面反射在掠射角處更加強烈),以及物體表面如何自我遮擋(Surfaces occlude)等。

Unity 5包含了一些Shader,像是標準著色器(Standard Shader),它們組成了一個易用又完整的PBS光照明模組。標準著色器主要是針對硬質表面(也就是建築材質)設計的,可以處理大多數現實世界的材質,例如石頭、陶瓷、銅器、銀器或橡膠等。但它也可以非常出色地處理一些非硬質表面的材質,例如皮膚、頭髮或布料等。

跟"我的"遊戲內容有何關聯?

基於物理的著色器並不代表“真實”,單純加入功能也不一定就能完全決定遊戲表現。它適合多種不同的美術風格和美學效果,例如從精確掃描(Accurately Scanned),到傳統拍照(Traditionally Photographed),再到手工繪製(Hand-painted)的各類貼圖。

對於製作沒有特殊光照表現的2D遊戲開發者來說,PBS不是必需的選項。但是如果你想玩玩PBS來創建出酷炫的效果,這裡我們將提供一些有用的使用經驗。

一窺究竟

當我們談及Unity5中的光照時,不妨引入兩個概念,即Context和Content:Context是指Unity原生的一些內容,而Content則是使用者創造的內容(類似於UGC)。

關於CONTEXT

當給一個物件加入光照時,該物件周邊的環境是非常重要的。Unity先前的版本中已經提供了一些經典的輔助工具,例如光照探頭(Light Probes),它能夠對某個位置上的漫反射光照進行採樣。而在Unity 5中我們將提供描述周圍環境資訊更加有效的方式。

縱覽全域

HDR資訊是PBS中一個非常重要的元素。它能夠更加有效地描述環境資訊,例如太陽的明亮度可能會超過藍天10倍。Unity5中提供了一個原生的通道來處理HDR格式檔案,你可以直接匯入副檔名為.hdr和.exr的圖片。

加入發光效果

反射探頭(Reflection Probe)紀錄了某個確定位置的反射情況。Unity5的場景中會預設包含一個反射探頭(你可以從Edit->Scene Render Settings->Default Reflection來查看它)。你可以修改設定或者採用天空盒(Skybox),不設置具體位置。

當然,你也可以建立自己的反射探頭。可以從GameObject->Light->Create Reflection probe找到這個功能。

然後就可以進行以下的操作:

將反射探頭拖到場景中的任意位置,它就會開始主動獲取周圍環境的光照資訊了。

每個反射探頭都有作用區域(就是探頭周圍顯示的黃色區域)。裡面的物體會從反射探頭上獲取反射資訊。

更多的圖元著色:

由於Unity5的動態全域光照(dynamic GI),光照探針也包含了間接的光線反射資訊,並透過標準著色器作用於每個圖元。這樣不管光線是直接或間接地作用於法線貼圖,它的效果看起來都會很棒。

這張圖只用了一個往下照明的光源,桶子旁邊和底部並沒有受到直接光源

動態全域光照(Dynamic GI)

全域光照是PBS模組中Context層面重要的成員。為了對Unity5中的全域光照有一個全面的理解,最好的方法是看看我們發表的有關動態全域光照的文章

顏色空間(Color Space)

PBS和標準著色器都工作在線性和Gamma模式。HDR編碼、反射探針的資料以及其他Content都會與你選擇的顏色空間相呼應。但為了達到最佳(最舒服)的視覺效果,你應該盡可能保持在線性顏色空間。

內容(The Content)

內容是你直接建立的資料,標準著色器確實對Unity傳統的材質工作流程進行了一些改進,希望你會滿意。

材質編輯器(The Material Editor)

標準著色器還引入了一個新的材質編輯器,它使PBS的材質編輯工作比以前的非PBS材質更簡單。

新編輯器更精簡,但卻提供了材質所有可能選項。在新編輯器中我們不需要選不同的著色器來改變貼圖通道,不會再出現“texture unused, please choose another shader” 這樣的錯誤,不再需要切換著色器來改變混合模式。

你會有一些備選的貼圖通道,任何一個沒用到的通道都會在編譯時被優化掉,因此不用擔心效率問題。Unity會根據你輸入到編輯器中的資料來產生正確的程式,使它用最高的效率執行。

小技巧:你可以用ctrl+點擊貼圖來預覽大圖,還可以分別查看顏色和Alpha通道。

按照你想的方式點亮一切!

PBS當然和Unity5的動態全域光照(GI)是相容的,全域光照系統完全瞭解標準著色器的工作方式,並在產生場景時將其考慮在內。

PBS和GI合體使開發者可以快速改變整個場景的光照條件,把不可能變成可能,效果也更逼真。

下圖中的小鎮你會注意到它和文章開頭那幅有不同的光照設定。靜態物體看起來更有質感和層次,整個場景遠近分明。這正是PBS的魔力所在。一旦材質加入PBS構建,它就會變得和光照條件完全獨立,大大減少工作量!

這就是我們喜歡它的理由,也是我們認為你也會喜歡它的理由!

好康分享,這個維京人的村莊我們打算在Unity5.0發佈的同時也在Asset Store上發佈。讚喔!

2014年11月3日 星期一

介紹Unity 5.0中的幀除錯器(Frame Debugger)

作者:ARAS PRANCKEVIČIUS
原文:http://blogs.unity3d.com/2014/07/29/frame-debugger-in-unity-5-0/



當你看到遊戲裡面有破圖時,是否曾今疑慮:“如何能一步一步地看到畫面如何產生的呢?“

如果在Windows的話,你可以透過一些擴展工具來做。輸出一個Winows版本的遊戲,透過Visual Studio 圖像除錯器, Intel GPA, RenderDoc, NVIDIA NSight或者 AMD GPU PerfStudio執行 ,然後擷取其中一幀的著色,並逐步觀察繪製呼叫和著色事件中看看到底發生了哪些事。
上面這些方式固然很好,因為這些工具提供非常底層的詳細資訊,但是也複雜,而且你得創建一個Windows 版本的遊戲並且執行那些工具。

所以我們一直在想:"是否可以在Unity中做個簡單易用的工具來完成這個目的呢?",因此我們在Unity5.0中開發了幀除錯器來解決這個問題。

進入幀除錯器(Enter Frame Debugger)


執行Unity,在Window功能表中找到Frame Debugger,你就可以看到整個Frame裡面draw call產生的列表。可以一步一步查看哪個點上著色了什麼。檢查陰影貼圖、著色材質、延遲G暫存或類似的東西。

幀除錯器的介面相當的簡單。在右邊會有一個draw call的樹狀結構以及一些挺有趣的事件,在左邊會顯示事件的細節。在Hierarchy預覽視窗中也會提醒你那些網格使用最多的draw call。

下圖是用gif動畫顯示一步一步查閱深度貼圖建立所耗用的draw call:


然後是光源處理的陰影貼圖:


然後,圖像的後期處理效果開始。你可以從小圖看到泛光和眩光的效果,模糊然後恢復。隨後是一個紋理的閃光:



著色目標顯示選項(Render target display options)

對於某些效果,如果能夠看到著色目標單獨的通道會很方便。這裡是一個透過Unity方向性光源陰影產生的螢幕空間暫存:

或只顯示紅色通道:


顯示的顏色範圍可以用工具來調整。這對HDR著色特別有用:




當一次著色到多個目標時,你可以選擇在遊戲視圖中要顯示哪一個。下面展示的是在5.0中延遲陰影模式中漫反射,鏡面反射,常規以及輻射/光源暫存。














執行注意事項(Implementation notes)

目前的幀除錯器的運作原理可說是一個玩具(我們還不確定它是否能解決開發者問題),因為沒有幀擷取(Frame capture)功能,所以通常我們是drew call到達一定程度之後停止著色。所以如果你的畫面中有100個物件,但你只想看10個物件的著色效能,那我們只是跳過其他90個物體的著色。如果在這個點上正好著色到了一個貼圖,那我們就會把它顯示在螢幕上。

這代表運作原理很簡單,我們花了幾天的工作天完成了基本雛形(然後花了幾個星期來調整介面)。這方法的缺點是只能在編輯器中執行。所以如果你在用這個工具的改變了著色設定(例如禁止物體,或者改變遊戲視圖的尺寸),那麼你會突然看到一個不同的drew call列表。

雖然有這些限制,但我們認為它是一個追蹤你遊戲中圖像效能強有力的工具。

那麼,祝使用幀除錯器愉快喔!

關於我自己

我的相片
Unity台灣官方部落格 請上Facebook搜尋Unity Taiwan取得Unity中文的最新資訊