unity项目中数据配置的简单解决方案

unity项目中保存数据的简单解决方案

一、 Unity 提供的ScriptableObject
它可以将数据存储在资源文件中,可以直接在unity面板中进行配置,里面可以存储预制体、图片、音效、材质等多种格式资源,当然也支持自定义的Class配置,当数据量不是很大或者只是配置一些固定常用的数据参数时,是很高效便捷的存储实现方式。
(想详细了解的话可以参考https://blog.csdn.net/candycat1992/article/details/52181814,介绍的很好)
举例:

/// <summary>
/// 场景环境光设置
/// </summary>
[Serializable]  //备注:自定义类前必须有[Serializable]标识,否则配置无法识别。
public class SceneLightSettings	
{
    public int id;
    public string name;
    public GameObject scenePrefab;
    public Material skyboxMat;
    public Color ambientColor;
    public Color fogColor;
}
		
/// <summary>
/// 创建配置文件
/// </summary>
/// <typeparam name="T"></typeparam>
[CreateAssetMenu(fileName = "Config", menuName = "Tools/Config")]
//添加此标签就能在资源窗口右键创建Config资源文件
public class GameConfig : ScriptableObject
{
	   /// <summary>
	   /// 旋转参数	
	   /// </summary>
	   [Tooltip("旋转参数")]    	//此标签方便在编辑器内查看参数含义,编辑器内鼠标停留在参数名上即可
	   public float rotateParam = 100f;

	   /// <summary>
	   /// 场景列表
	   /// </summary>	
	  [Tooltip("场景列表")]
	   public List< SceneLightSettings > sceneList = new List< SceneLightSettings>();

	   /// <summary>
	   /// 背景音乐	
	   /// </summary>
	   [Tooltip("背景音乐")]	
	   public AudioClip bgAudioClip;
}

备注:资源窗口右键找到"Tools/Config",创建Config文件哦诶之即可。配置好的文件可放于Resources目录下,方便调用。

GameConfig gameInfoConfig = Resources.Load<GameConfig>("Config");

二、 UnityAssetStore插件EasyExcel

当数据量较大,编辑器内配置繁琐且易出错时,EasyExcel可以更好的解决配置问题。传统的配置Excel表格也是策划最熟悉方便的方式。EasyExcel可以在unity中导入使用excel数据,对每一个文件内sheet自动转换导出,使用前建议打开例子文件,熟悉表格配置规则、导出设置和代码读取使用规则,上手不难。(详情可参考https://assetstore.unity.com/packages/tools/integration/easyexcel-99352?locale=zh-CN)
在这里插入图片描述
在这里插入图片描述
代码举例:

public class ConfigMgr
{
    private readonly EEDataManager _eeDataManager = new EEDataManager();
    public List<EasyExcelGenerated.name> nameList = new List<EasyExcelGenerated.name>();
    private ConfigMgr()
    {
        _eeDataManager.Load();
        nameList = _eeDataManager.GetList<EasyExcelGenerated.name>();
    }
}

以上两种简单的数据存储方式基本上满足项目需求了。

猜你喜欢

转载自blog.csdn.net/Gao_sun/article/details/106878885
今日推荐