环境: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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。