環境:win10, Unity2018, vs2015ide
最近在研究把場景打成AB包進行加載
可是發現以前設置的天空盒,這樣加載場景後就一片粉了url
其實就是材質shader丟失致使天空變粉
如上圖,若是是直接在Unity裏運行這個場景固然是沒問題的code
那麼要解決這個問題,須要幾個步驟,還要藉助代碼(注:這只是我我的的解決辦法)it
void Start() { StartCoroutine(loadSky()); } IEnumerator loadSky() { using(WWW www=new WWW(url)//這裏的url就是你的包放置的地址 //好比:http://127.0.0.1/AB/sky.ab (sky.ab在前面提到,是天空盒材質的包) { yield return www; if(www.error==null) { var a=www.assetBundle; Material m = a.LoadAsset("skybox8.mat") as Material;//skybox8.mat前述提到 //雖然材質打包了,可是也沒有shader,因此須要下面這行 m.shader=Shader.Find("Skybox/6 Sided"); //由於我們在前面步驟中在Graphics設定裏把這個shader加入了,因此能Find到 RenderSettings.skybox=m;//把加好shader的材質賦給場景 } } }
如上,這樣才能把天空材質加載上class
RenderSettings.skybox
這個是在場景lighting面板裏設置的天空,我們這裏須要上面的代碼來賦值打包
這樣就能夠了yield
注:加載打成ab包的場景,場景裏的模型材質shader是不會丟的im