您好,登錄后才能下訂單哦!
環境:win10, Unity2018, vs2015
最近在研究把場景打成AB包進行加載
但是發現之前設置的天空盒,這樣加載場景后就一片粉了
其實就是材質shader丟失導致天空變粉
如上圖,如果是直接在Unity里運行這個場景當然是沒問題的
那么要解決這個問題,需要幾個步驟,還要借助代碼(注:這只是我個人的解決辦法)
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的材質賦給場景
}
}
}
如上,這樣才能把天空材質加載上
RenderSettings.skybox
這個是在場景lighting面板里設置的天空,咱們這里需要上面的代碼來賦值
這樣就可以了
注:加載打成ab包的場景,場景里的模型材質shader是不會丟的
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。