如果已經(jīng)看過(guò)本章節(jié):目錄傳送門:這是目錄鴨~ <https://www.cnblogs.com/Miku-CEB-Bug/p/11509708.html>
1.場(chǎng)景搭建:
首先我們?nèi)ssetStore逛淘寶~~~
我淘到的是這個(gè)資源,其他好看的場(chǎng)景(消耗不高的都行)。
然后我們導(dǎo)入了這個(gè)資源后,把資源根文件夾的名字改為Select,把Demo場(chǎng)景文件的名字改為Selection,我這樣修改的emmm...
然后打開(kāi)那個(gè)Demo場(chǎng)景,走到LightningSetting關(guān)閉霧效果(這個(gè)消耗有點(diǎn)大,關(guān)一下,你開(kāi)心也可以不關(guān)的~):
然后我們就在場(chǎng)景里移動(dòng)Main Camera到你喜歡的好看的位置~
順便創(chuàng)建個(gè)Reflection Probe(反射效果的):
前面是沒(méi)加的,后面是加了的,區(qū)別有點(diǎn)小,仔細(xì)看右邊的更漂亮誒~~~
然后我們?cè)趫?chǎng)景中創(chuàng)建空對(duì)象,重新命名為你喜歡的名字,用于展示英雄的角色坐標(biāo)的定位,我在里面放了個(gè)阿離并把相對(duì)坐標(biāo)設(shè)置為零來(lái)測(cè)試站的位置是否準(zhǔn)確(我這里面還有個(gè)光照是因?yàn)槟槻勘容^暗,你可以自己調(diào)整光照的,對(duì)~說(shuō)的就是你o(*^▽^*)o):
到此為止~我們的場(chǎng)景就搭建完畢了親親~
2.英雄資源的打包相關(guān)(重要?。。。?
命名規(guī)則:我們可以看到,農(nóng)藥的AssetBundle命名結(jié)構(gòu)是:英雄ID+皮膚編號(hào)(沒(méi)有空格,比如說(shuō)阿離的ID是199,這個(gè)花間舞是第二個(gè)皮膚,所以ID為1992,第一個(gè)默認(rèn)皮膚不需要輸入皮膚ID就199就好了)_英雄拼音_資源類型.assetbbundle。(下面可以看到廉頗ID是105,這個(gè)設(shè)定使得我們提資源十分方便~良心TX~):
然后我們也打算用這種規(guī)則來(lái)命名~
下面部分含有代碼~
創(chuàng)建幾個(gè)新文件夾在根工程目錄下,路徑是 ActorManager/Scripts,然后再在里面創(chuàng)建一個(gè)Csharp(即C#),名為ActorManager:
/* * 編輯者:Miku醬 * 版本:1 * 首次編寫日期:2019/09/15 13:53 * 修改日期:2019/09/15 13:53 *
強(qiáng)行加一行~~~*/ 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);//切換場(chǎng)景不銷毀這個(gè)物體 //
Debug.Log(allActor[100].actorName);//測(cè)試 } /// <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)//
數(shù)組長(zhǎng)度為0則返回錯(cuò)誤 { Debug.LogError("加載角色信息文件失敗!\n錯(cuò)誤文件位置:"+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> ///
儲(chǔ)存單個(gè)角色信息的類/// </summary> [System.Serializable]//序列化,注意要用System命名空間下面的 public
class ActorInfoData { /// <summary> /// 角色名字 /// </summary> public string
actorName ="英雄名字"; /// <summary> /// 角色拼音 /// </summary> public string
actorPinYin ="PinYin"; /// <summary> /// 角色I(xiàn)D /// </summary> public int actorID
=100; /// <summary> /// 屏蔽英雄 /// </summary> public bool banActor = false; ///
<summary> /// 角色背景 /// </summary> [TextArea]//這個(gè)是文本框,顯示在編輯器的 public string
actorBG ="背景故事"; /// <summary> /// 皮膚列表(第一個(gè)就是原皮,必填) /// </summary> public
List<ActorSkin> actorSkins =new List<ActorSkin>(); } /// <summary> /// 儲(chǔ)存單個(gè)皮膚的
/// </summary> [System.Serializable]//序列化 public class ActorSkin { /// <summary>
/// 皮膚名字 /// </summary> public string skinName = "皮膚名字"; /// <summary> ///
皮膚展示模型資源路徑/// </summary> [TextArea]//這個(gè)是文本框,顯示在編輯器的 public string
skinShowModelPath ="皮膚展示模型資源路徑"; /// <summary> /// 皮膚對(duì)戰(zhàn)模型資源路徑 /// </summary>
[TextArea]//這個(gè)是文本框,顯示在編輯器的 public string skinBattleModelPath = "皮膚對(duì)戰(zhàn)模型資源路徑"; ///
<summary> /// 皮膚展示特效資源路徑 /// </summary> [TextArea]//這個(gè)是文本框,顯示在編輯器的 public string
skinShowEffectPath ="皮膚展示特效資源"; /// <summary> /// 皮膚對(duì)戰(zhàn)特效資源路徑 /// </summary>
[TextArea]//這個(gè)是文本框,顯示在編輯器的 public string skinBattleEffectPath = "皮膚對(duì)戰(zhàn)特效資源"; } }
腳本ActorInfo(承載信息的載體):
1 /* 2 * 編輯者:Miku醬 3 * 版本:1 4 * 首次編寫日期:2019/09/15 13:53 5 *
修改日期:2019/09/15 13:53 6 * 強(qiáng)行加一行~~~ 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 }
?
?
創(chuàng)建角色信息數(shù)據(jù)庫(kù):
新建一個(gè)物體,并掛上腳本ActorInfo,修改信息(你開(kāi)心就好隨便想改啥就改啥~),然后制作成預(yù)制體并且設(shè)置標(biāo)簽:
然后在點(diǎn)擊工具欄的打包AssetBundle的按鈕,打包這個(gè)預(yù)制體,最后我們?cè)趫?chǎng)景中隨便找個(gè)物體掛上ActorManager,并增加一個(gè)路徑(就是你預(yù)制體標(biāo)簽的名字加后綴,標(biāo)簽?zāi)J(rèn)是全部小寫,我們?cè)O(shè)置的時(shí)候大小寫不影響文件讀?。?br>
如果運(yùn)行后Unity編輯器毫無(wú)波瀾甚至有點(diǎn)想笑的話那就說(shuō)明這步OK啦~
施工了一個(gè)中午emmm~頭發(fā)又少了幾根,下一部分再見(jiàn)咯~
如果已經(jīng)看過(guò)本章節(jié):目錄傳送門:這是目錄鴨~ <https://www.cnblogs.com/Miku-CEB-Bug/p/11509708.html>
?
熱門工具 換一換
