Unity3D自定義資源配置檔案
阿新 • • 發佈:2019-01-28
配置資原始檔估計大家瞭解很多,比如XML、JSON、Protobuf、Excel、TXT等等
在開發過程中,將遊戲資料序列化到配置檔案中,專案執行時讀取配置檔案中的資料
本文另外介紹一個Unity的配置檔案(.asset)
該配置檔案的優點:
當我們需要將遊戲資源裡的貼圖(Texture)、遊戲物件(Gameobject)等預設體儲存到配置檔案時,這時我們就可以使用該配置檔案
但是當關聯的預設體丟失時,需要重新將預設體關聯起來
接下來,我寫了一個Demo,介紹在Unity3D建立自定義配置資原始檔點選開啟連結
【管理類】
建立一個管理類,提供函式來建立和讀取配置檔案(.asset)
在這裡我已經簡單的封裝好了,大家下載來後直接使用即可
using UnityEngine; using System.Collections; using System.IO; using UnityEditor; public class CustomConfigManager<T> where T : ScriptableObject//對泛型引數進行約束,使其只能是ScriptableObject的派生類 { private static CustomConfigManager<T> _instance; public static CustomConfigManager<T> GetInstance { get { if(_instance==null) { _instance=new CustomConfigManager<T>(); } return _instance; } } private CustomConfigManager() { } /// <summary> /// 將類例項化為配置檔案 /// </summary> /// <typeparam name="T"></typeparam> public static void CreateAsset() { //將物件例項化 ScriptableObject so = ScriptableObject.CreateInstance(typeof(T)); if (so == null) { Debug.Log("該物件無效,無法將物件例項化"); return; } //自定義配置資源路徑 string path = Application.dataPath + "/CustomConfigFile/MyFile"; //判斷該路徑是否存在,不存在的話建立一個 if (Directory.Exists(path)==false) { Directory.CreateDirectory(path); } //配置檔案以.asset結尾 //將物件名配置成與類名相同 path = string.Format("Assets/CustomConfigFile/MyFile/{0}.asset",typeof(T).ToString()); //按指定路徑生成配置檔案 AssetDatabase.CreateAsset(so,path); } /// <summary> /// 將配置檔案轉化為物件 /// </summary> /// <typeparam name="T"></typeparam> public static void GetAsset() { //配置檔名與物件名一致 string name = typeof(T).ToString(); string path = string.Format("Assets/CustomConfigFile/MyFile/{0}.asset",name); // 將配置檔案轉化為物件 T obj = AssetDatabase.LoadAssetAtPath<T>(path); } }
【建立可序列化類(演示)】
using UnityEngine; using System.Collections; using System; public enum MyEnum { START, PAUSE } /// <summary> /// 該類可以序列化 /// </summary> [Serializable] public class CustomConfig : ScriptableObject//繼承ScriptableObject { //需要例項化的變數將其設定為public或者設定其屬性為[Serializable] public MyEnum me = MyEnum.START; public Texture interge; [Range(0,10)] public float f; public GameObject obj; }
【測試】
建立一個Editor資料夾,將指令碼新增到其中
建立好的管理類後,直接呼叫即可
using UnityEngine;
using System.Collections;
using UnityEditor;
public class MySelfText : MonoBehaviour
{
[MenuItem("AssetCreateOrGet/Create")]
public static void Create()
{
CustomConfigManager<CustomConfig>.CreateAsset();
}
[MenuItem("AssetCreateOrGet/Get")]
public static void Get()
{
CustomConfigManager<CustomConfig>.GetAsset();
}
}
點選按鈕,成功建立配置檔案
Project檢視:
Inspector檢視:
本人也在尋找一份遊戲開發實習工作,如果大佬們需要開發人員,請把我帶走
作品的話可以私聊我哦!