亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity場景打AssetBundle包,加載后天空盒材質丟

發布時間:2020-02-14 11:10:36 來源:網絡 閱讀:2483 作者:lreach 欄目:游戲開發

環境:win10, Unity2018, vs2015

最近在研究把場景打成AB包進行加載
但是發現之前設置的天空盒,這樣加載場景后就一片粉了

其實就是材質shader丟失導致天空變粉
Unity場景打AssetBundle包,加載后天空盒材質丟
如上圖,如果是直接在Unity里運行這個場景當然是沒問題的

那么要解決這個問題,需要幾個步驟,還要借助代碼(注:這只是我個人的解決辦法)

  1. Graphics設定
    Unity菜單:Edit->Prject Settings->Graphics
    Unity場景打AssetBundle包,加載后天空盒材質丟
    注意在Always Included Shaders選項里
    把這個Skybox用的內建shader(Skybox/6 Sided)加入到列表中
  2. 打包時,把你用的天空盒材質球,比如skybox8.mat打包,保險起見,把其六張貼圖也打到一個包里,比如打的包叫sky.ab
  3. 比如咱們打包的場景叫 a01.unity,打包是a01.ab
    加載包,加載場景就不贅述了。
    要打包的這個場景中添加一個物體,上面掛腳本,在start里運行幾段代碼就好了
  4. 代碼:
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面板里設置的天空,咱們這里需要上面的代碼來賦值
Unity場景打AssetBundle包,加載后天空盒材質丟

這樣就可以了

注:加載打成ab包的場景,場景里的模型材質shader是不會丟的

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平邑县| 永康市| 文昌市| 凉城县| 固原市| 绥滨县| 合肥市| 泽库县| 漠河县| 团风县| 通许县| 隆安县| 六枝特区| 海伦市| 如皋市| 德安县| 蕲春县| 岢岚县| 和静县| 南木林县| 贵阳市| 文登市| 霍山县| 湾仔区| 磴口县| 乐山市| 高邮市| 北流市| 西平县| 达州市| 滦平县| 赣榆县| 恩平市| 丹巴县| 定州市| 资讯| 新疆| 娄烦县| 沁源县| 海城市| 大理市|