91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

富源县| 平山县| 天津市| 山西省| 漠河县| 崇明县| 朔州市| 黑山县| 普兰县| 洞口县| 阿拉善右旗| 石首市| 化德县| 沈丘县| 隆尧县| 新宁县| 新巴尔虎右旗| 清水河县| 舞阳县| 昌吉市| 寿宁县| 勐海县| 根河市| 临清市| 监利县| 双桥区| 临武县| 黄龙县| 会东县| 毕节市| 公安县| 当涂县| 石狮市| 霍林郭勒市| 武汉市| 漳浦县| 徐水县| 尼木县| 天峨县| 辽源市| 营山县|