聊聊Unity2018的LWRP和混合光照

0x00 前言

在這篇文章中,咱們選擇了過去幾周Unity官方社區交流羣以及UUG社區羣中比較有表明性的幾個問題,總結在這裏和你們進行分享。主要涵蓋了** Scripting、Assetsbundle、Tilemap、Graphic、UGUI、Asset、Profiler 、App、 Shader、 Timeline、Lighting**等領域,其中會着重介紹一下LWRP和混合光照相關的話題。windows

同時,也歡迎你們加入咱們這個討論乾貨的官方技術羣,交流見解分享經驗。
Unity官方社區交流羣:629212643app

0x01 Scripting

Q:Unity2018.2新建一個項目,而後新建一個腳本,打開就提示這個,unity都沒有生成sln文件,難道要設置哪兒?
2F40BAC6D11DE0D5610A43D5402B5FFB.png編輯器

A:首先查看一下在Unity2018中建立新項目時使用的是Visual Studio 2017嗎?Unity2018再也不支持Visual Studio 2015。 爲了解決這個問題,請下載最新版本的Visual Studio 2017。此外,還可使用Visual Studio Code,這是一個更快,更輕,適合Unity的腳本編輯器。svn

0x02 Assetsbundle

Q:請問大家有遇到過從SVN上更新下來的同一個工程,不一樣的電腦打出來的AssetBundle大部分文件的MD5和Unity本身的HASH值都不同的狀況嗎?
A:有漏上傳meta文件嗎?咱們項目試過一次,有同事漏了上傳.meta文件,而後其餘同事更新下來時,因爲沒有他的meta文件,因此unity自動在本地生成,使得不一樣人從svn更新下來的生成了各自的meta文件,而後一比對md5就空了。meta文件是unity記錄GUID的,不同的話,在AssetBundle那裏計算MD5好像會有問題。(廣州-木頭蛇杖工具

0x03 Tilemap

Q:tilemap 在繪製的時候,在場景中,一塊tile 無法填充完整一個場景中的單位塊。請問是怎麼回事?
E10511BC94C5BAFA248E576E599A6B01.jpg字體

A1:是我切的尺寸,一塊 是 64 * 64。sprite 的設置 pixels oer unit 我設置的100,設置成 64 就行了。屏幕快照 2018-08-12 下午2.46.30.png
(成都—mid)
A2:除了檢查Sprite的Pixels Per Unit屬性以外,還能夠查看一下TileMap組件的Scale屬性是否爲1,這裏的設置也有可能會致使tile和場景中單位塊不匹配。屏幕快照 2018-08-12 下午2.48.06.png優化

0x04 Graphic

Q:@慕容小匹夫 這個反射怎麼改它的範圍,它們對不上。多謝。
0493DD5F3397B22D6A46614905E62B34.jpg動畫

A:這是因爲不正確的採樣形成的問題。若是你使用的是reflect probe,那麼針對室內或小範圍內的場景反射要勾選上box projection。這是由於對應於同一個Reflection Probe,不一樣位置的物體應該具備不一樣的反射效果。通常的Cubemap比較適合於模擬室外大場景物體的反射,室內小範圍若是用cubemap可能會錯亂。勾選box projection能夠用來修正這種錯誤。ui

0x05 UGUI

Q:ugui字體在編輯器中正常顯示,可是打包pc運行就沒法顯示,有沒有人遇到過這種狀況的?編輯器不管從resources加載,仍是從AssetBundle加載都是正常的,用什麼字體也都是正常的,可是打包pc後怎麼都沒法顯示。70A4F77BC434BD0EF34D6B05D12CC1F1.pnggoogle

A:缺乏unity內置的UI部分的shader,我下載了而後包含到Graphics裏面就能夠了。(北京-兔子2號)

0x06 Asset

Q:求助,打包的時候瘋狂的輸出這個,也看不出來是哪一個文件。
5FF8D3C255F139310F50283B05B4E406.png

A:看上去有點像PVRTexTool的報錯。Unity會調用PVRTexTool 的命令行工具壓縮貼圖,所以咱們能夠將報錯文件的範圍縮小到貼圖資源。
首先能夠排查一下是否有pvrtc格式的壓縮紋理,你也能夠看看大家的etc2_x的紋理格式,對工程中的紋理作一個排除法。
相關bug的討論能夠查看imgtec社區中相關的主題:
https://forums.imgtec.com/t/pvrtextoolcli-bug-encoding-etc2-rgb-a1-etc2-rgb-a1-ubn-srgb/2365

0x07 Profiler

Q:在windows上查看Unity的profiler,其中這項「total system memory usage 」一直無限增加 正常嗎?
image.png

A:看上去不正常。這個值是利用了windows 上的PROCESS_MEMORY_COUNTERS_EX來獲取的。你能夠看一看你項目中Reserved Total這些有沒有持續增加。若是都在漲的話,就優化一下吧。

0x08 App

Q1:我如今想作一個加載的窗口,加載完了再顯示遊戲內容。不過但願加載的窗口沒有邊框(沒有關閉最小化之類的)。如今調用Win32 API去設置,老是會看到先有一個有邊框的,而後迅速到沒邊框的。就是有個跳轉的過程,看的不爽。
A:能夠調用SetWindowLong。代碼以下:
EC50EB11D30DA6F05EF7D2444B68F4A8.png
若是還有跳轉的話,能夠考慮在程序啓動參數加popupwindow。(北京-兔子2號)

Q2:ECC8F2256A92294FDDC24A77E3F7772A.jpg
A:這個問題一般是由插件致使的。能夠在項目中檢查一下是否有重複的jar,若是有重複的則刪除掉。 若是不想一個一個查找,也能夠考慮刪除項目的「plugins」文件夾,而後從新導入全部插件。

0x09 Shader

Q:Shader中使用「UsePass」引用同一個Shader的另一個SubShader的Pass會致使崩潰,這個是Bug仍是就是不能這麼寫的?我使用的版本是2017.4.6f1。例如這樣:
屏幕快照 2018-08-10 下午4.40.10.png

A:UsePass主要是用來實現不一樣的shader中的代碼複用的,查看文檔的話也能夠看到相關的描述:

Some of the shaders could reuse existing passes from other shaders, reducing code duplication

因此不要用UsePass引用同一個Shader中的Pass。

0xA Timeline

Q:想請教各位老師們一個關於timeline的問題,timeline中調的位置爲何運行後播放會發生偏移呢?
87E1A3BD8204E7405791575D9A00B21A.png
8F6CDF66FBEB4FB011A6E5EC783AEBA2.png

A:你的模型上的Animator組件有Controller嗎?你能夠把把Animator上的Controller去掉,徹底由Timeline控制動做。由於在運行階段它的動畫是增量影響上層的,在編輯階段又是覆蓋上層數據的。因此可能會不同。

0xB Lighting

Q:這是默認管線的light probe,能夠看到動態物體進入陰影範圍變暗了。
4828DF83-2D02-4D3C-A5C2-9CE3481B72DE.gif
這是的LWRP的效果,烘焙後light prob陰影不會對動態物體產生任何影響
20F2494B-77DF-477E-A119-E9CA2677DD85.gif
烘焙模式是 Mix subtractive,燈光一個mixed模式的Directional light,請教一下,是否lwrp的subtractive烘焙模式 會使light probe忽略陰影的影響?
A:這個不是lightprobe的緣由,而是目前lwrp對mixed light的支持還不完善。對mixed light更多的支持還在開發中。在lwrp管線下,若是不使用mixed,只使用bake燈光, light probe能夠正確的做用於動態物體的。
BDF45290-563B-423C-BDAC-7C2C131EB20C.png
上圖是傳統渲染流水線和LWRP在光照模式這項功能上的對比。
完整的對比,能夠參考這份文檔:
Pipeline Feature Comparison:https://docs.google.com/document/d/1MgoycUhS9xQKXxbTy1yHt7OCByI10rds3TyRBCSlFmg/edit

0xC 後記

好了,以上就是想和你們分享的幾個在羣裏討論的小問題。
再次,歡迎你們加入咱們這個討論乾貨的官方技術羣,交流分享呀。
Unity官方社區交流羣:629212643

相關文章
相關標籤/搜索