使用ScriptableAsset加载数据

前言:

我们经常用Json、CSV等文件为数据做初始化,我们也可以使用Unity中自带的ScriptableAsset类实现这一流程。

注意:ScriptableAsset不能在编辑器以外进行修改,可以在游戏运行前在Unity中部署数据,运行后的游戏不能使用ScriptableAsset来保存修改后的数据!

正文:

定义并创建资产数据

首先我们定义一个数据类,同时继承ScriptableAsset类,类在定义时,上面加上属性:
[CreateAssetMenu(menuName ="AssetDatas/SkillAsset")]

模拟定义一个技能资产数据:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName ="AssetDatas/SkillAsset")]
public class SkillAsset :ScriptableObject
{
    public int nodeID;
    public string skillIcon;
    public string skillName;
    public bool isActive;
    public int clickNeedCount;
    public int clickCount;
    public List<int> nextIDs;
    public List<int> beforeIDs;
    public Vector3 pos;
}

在Unity中就可以右键Create这个资产数据啦!

解析资产数据

我们可以将所有需要解析的资产数据放到指定文件夹下,进行统一加载:

下面是一个单例的数据管理类,解析如下:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 数据管理类
/// </summary>
public class DataManager : Singleton<DataManager>
{
    /// <summary>
    /// 资产原数据管理
    /// </summary>
    Dictionary<int, SkillAsset> skillAsset_Dic = new Dictionary<int, SkillAsset>();
    public Dictionary<int, SkillAsset> SkillAsset_Dic { get => skillAsset_Dic; }
    /// <summary>
    /// 初始化数据
    /// </summary>
    public void Init()
    {
        Load_SkillAssetInfo();
    }
    /// <summary>
    /// 加载资产中的技能数据
    /// </summary>
    public void Load_SkillAssetInfo()
    {
        //筛选指定文件夹下所有资产数据的文件路径
        string[] filePaths = Directory.GetFiles("Assets/Resources/SkillAssets", "*.asset", SearchOption.AllDirectories);
        foreach (var filePath in filePaths)
        {
            //string fileName = Path.GetFileNameWithoutExtension(filePath);
            //Debug.Log(fileName);

            //AssetDatabase.LoadAssetAtPath通过文件路径加载资产数据
            SkillAsset asset = AssetDatabase.LoadAssetAtPath<SkillAsset>(filePath);

            //存入资产原数据管理字典中
            skillAsset_Dic.Add(asset.nodeID, asset);
        }
    }
}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值