如果已經看過本章節:目錄傳送門:這是目錄鴨~ 1.場景搭建: 首先我們去AssetStore逛淘寶~~~ 我淘到的是這個資源,其他好看的場景(消耗不高的都行)。 然後我們導入了這個資源後,把資源根文件夾的名字改為Select,把Demo場景文件的名字改為Selection,我這樣修改的emmm... ...
如果已經看過本章節:目錄傳送門:這是目錄鴨~
1.場景搭建:
首先我們去AssetStore逛淘寶~~~
我淘到的是這個資源,其他好看的場景(消耗不高的都行)。
然後我們導入了這個資源後,把資源根文件夾的名字改為Select,把Demo場景文件的名字改為Selection,我這樣修改的emmm...
然後打開那個Demo場景,走到LightningSetting關閉霧效果(這個消耗有點大,關一下,你開心也可以不關的~):
然後我們就在場景里移動Main Camera到你喜歡的好看的位置~
順便創建個Reflection Probe(反射效果的):
前面是沒加的,後面是加了的,區別有點小,仔細看右邊的更漂亮誒~~~
然後我們在場景中創建空對象,重新命名為你喜歡的名字,用於展示英雄的角色坐標的定位,我在裡面放了個阿離並把相對坐標設置為零來測試站的位置是否準確(我這裡面還有個光照是因為臉部比較暗,你可以自己調整光照的,對~說的就是你o(*^▽^*)o):
到此為止~我們的場景就搭建完畢了親親~
2.英雄資源的打包相關(重要!!!):
命名規則:我們可以看到,農藥的AssetBundle命名結構是:英雄ID+皮膚編號(沒有空格,比如說阿離的ID是199,這個花間舞是第二個皮膚,所以ID為1992,第一個預設皮膚不需要輸入皮膚ID就199就好了)_英雄拼音_資源類型.assetbbundle。(下麵可以看到廉頗ID是105,這個設定使得我們提資源十分方便~良心TX~):
然後我們也打算用這種規則來命名~
下麵部分含有代碼~
創建幾個新文件夾在根工程目錄下,路徑是 ActorManager/Scripts,然後再在裡面創建一個Csharp(即C#),名為ActorManager:
/* * 編輯者:Miku醬 * 版本:1 * 首次編寫日期:2019/09/15 13:53 * 修改日期:2019/09/15 13:53 * 強行加一行~~~ */ using System.Collections; using System.Collections.Generic; using UnityEngine; using LuoHao.AssetBundleManager; namespace LuoHao.Actor { public class ActorManager : MonoBehaviour { /// <summary> /// 角色信息文件的列表 /// </summary> [TextArea] public List<string> actorFileList = new List<string>(); /// <summary> /// 全部的角色信息 /// </summary> public static Dictionary<int, ActorInfoData> allActor = new Dictionary<int, ActorInfoData>(); private void Awake() { LoadAllActor();//載入 DontDestroyOnLoad(this.gameObject);//切換場景不銷毀這個物體 // Debug.Log(allActor[100].actorName);//測試 } /// <summary> /// 載入角色信息 /// </summary> public bool LoadAllActor() { for(int i = 0; i < actorFileList.Count; i++) { //取得文件 PackageForAssetBundle pfa= AssetBundleManager.AssetBundleManager.GetAssetBundle(actorFileList[i]); //載入資源 GameObject[] gms = pfa.GetAssetBundle().LoadAllAssets<GameObject>(); ActorInfo[] ai = gms[0].GetComponents<ActorInfo>(); if (ai.Length == 0)//數組長度為0則返回錯誤 { Debug.LogError("載入角色信息文件失敗!\n錯誤文件位置:"+actorFileList[i]); return false; } else { for (int i1 = 0; i1 < ai.Length; i1++) allActor.Add(ai[i1]._actorInfoData.actorID, ai[i1]._actorInfoData); //信息載入字典.... } pfa.UnLoadAssetBundle(true);//卸載ab包 } return true; } } /// <summary> /// 儲存單個角色信息的類 /// </summary> [System.Serializable]//序列化,註意要用System命名空間下麵的 public class ActorInfoData { /// <summary> /// 角色名字 /// </summary> public string actorName = "英雄名字"; /// <summary> /// 角色拼音 /// </summary> public string actorPinYin = "PinYin"; /// <summary> /// 角色ID /// </summary> public int actorID = 100; /// <summary> /// 屏蔽英雄 /// </summary> public bool banActor = false; /// <summary> /// 角色背景 /// </summary> [TextArea]//這個是文本框,顯示在編輯器的 public string actorBG = "背景故事"; /// <summary> /// 皮膚列表(第一個就是原皮,必填) /// </summary> public List<ActorSkin> actorSkins = new List<ActorSkin>(); } /// <summary> /// 儲存單個皮膚的 /// </summary> [System.Serializable]//序列化 public class ActorSkin { /// <summary> /// 皮膚名字 /// </summary> public string skinName = "皮膚名字"; /// <summary> /// 皮膚展示模型資源路徑 /// </summary> [TextArea]//這個是文本框,顯示在編輯器的 public string skinShowModelPath = "皮膚展示模型資源路徑"; /// <summary> /// 皮膚對戰模型資源路徑 /// </summary> [TextArea]//這個是文本框,顯示在編輯器的 public string skinBattleModelPath = "皮膚對戰模型資源路徑"; /// <summary> /// 皮膚展示特效資源路徑 /// </summary> [TextArea]//這個是文本框,顯示在編輯器的 public string skinShowEffectPath = "皮膚展示特效資源"; /// <summary> /// 皮膚對戰特效資源路徑 /// </summary> [TextArea]//這個是文本框,顯示在編輯器的 public string skinBattleEffectPath = "皮膚對戰特效資源"; } }
腳本ActorInfo(承載信息的載體):
1 /* 2 * 編輯者:Miku醬 3 * 版本:1 4 * 首次編寫日期:2019/09/15 13:53 5 * 修改日期:2019/09/15 13:53 6 * 強行加一行~~~ 7 */ 8 9 using System.Collections; 10 using System.Collections.Generic; 11 using UnityEngine; 12 13 namespace LuoHao.Actor { 14 public class ActorInfo : MonoBehaviour 15 { 16 [Header("角色信息")] 17 public ActorInfoData _actorInfoData; 18 } 19 }
創建角色信息資料庫:
新建一個物體,並掛上腳本ActorInfo,修改信息(你開心就好隨便想改啥就改啥~),然後製作成預製體並且設置標簽:
然後在點擊工具欄的打包AssetBundle的按鈕,打包這個預製體,最後我們在場景中隨便找個物體掛上ActorManager,並增加一個路徑(就是你預製體標簽的名字加尾碼,標簽預設是全部小寫,我們設置的時候大小寫不影響文件讀取):
如果運行後Unity編輯器毫無波瀾甚至有點想笑的話那就說明這步OK啦~
施工了一個中午emmm~頭髮又少了幾根,下一部分再見咯~
如果已經看過本章節:目錄傳送門:這是目錄鴨~