Unity5動態加載烘培場景

  有時候咱們須要動態加載場景(好比場景比較大,或者一些無限重複的自動生成的場景),這時若是對場景又使用了烘培,那麼在unity5裏面就會有一些小問題。android

  1.在這種需求下咱們通常會把場景物體存成一個預置,須要的時候加載進來,可是在unity5裏面,物體的lightmap信息(index和偏移)並不會記錄在預置上,這致使你直接把預置加載進來看不到烘培效果,這裏要這樣,在加載以後手動的賦值這個lightmap信息,(你能夠在烘培時預先保存這個信息),使用render的lightmapIndexlightmapScaleOffset來設置它的烘培信息。編輯器

2.然而使用上面的方法對於一些shader仍是會看到錯誤的結果(編輯器正確,至少android設備上是錯的),由於unity5在某些設備上,對於這種動態加載的物體,不管你是否設置它的renderer的 lightmapIndex和 lightmapScaleOffset, 它都不會爲其shader設置LIGHTMAP_ON這個關鍵字,若是看一下unity 支持light map的shader的源碼,能夠發現這個 LIGHTMAP_ON是控制顯示烘培圖的關鍵,可是這種狀況unity5不會設置,而且你本身手動設置也不行。這裏有一個方法,就是修改這個shader,本身加一組關鍵字,好比叫作DYNAMIC_LIGHTMAP_ON,就算沒有定義LIGHTMAP_ON,定義了DYNAMIC_LIGHTMAP_ON也會觸發lightmap的貼圖,而後在代碼里加載完畢動態場景後,設置這個keyword就好了spa


UNity4聽說沒有這個問題,對於動態場景,直接加載就自動有lightmap裏了,由於unity4會把lightmap信息存儲在預置裏。htm


相關文章
相關標籤/搜索