unity 将配置信息生成本地asset文件

我们在做项目游戏时,会有很多的配置信息,有的是一些表格,然后做配置表,生成xml等文件再加载到unity来使用,还有一些轻量级的数据做到setting类的公共字段,在面板赋值,为了方便,也会生成一个本地文件,这样可以在后续更改时尽可能少的去修改源代码。

生成asset文件要使用到 AssetDatabase 这个类,关于这个类似操作asset文件夹下的文件的,可以加载图片,资源等,详细的可以去查看 API.我们这里只需要使用它的CreateAsset()方法。

该方法需要提供路径,就是你文件存储的路径,还有存储的内容。需要特别注意的是:路径是相对于asset文件夹就是工程文件夹,不是绝对路径,如果使用绝对路径是无法创建的,而且创建之前要确保该文件夹存在,否则也无法创建成功(这里采坑才发现,当使用绝对路径它会一直告诉你文件夹路径有问题,要使asset文件夹相对路径)

然后,要先创建一下你要保存的内容,这里要用到ScriptableObject ,关于这个  的api就不在贴了,由于该文件是需要我们在运行之前就得创建的,所以也用到了编辑器扩展相关知识,不了解的去 充下电。好了基本涉及到的知识点讲完了接下来上代码

首先贴上实例的要做成文件的类:

[Serializable]
public class LocalSettings : ScriptableObject 
{
    public GameSetting gameSetting;
    public int val;
    public float fl;
}

    其中gamesetting是一个数据类,可序列话的,但是不继承scriptableObject。

接下来是负责创建的工具类:

public class ConfigFile  <T>where T :ScriptableObject 
{
    //
    public static void CreatLocalFile()
    {
        if (!Directory.Exists (SettingFilePath))
        {
            Directory.CreateDirectory(SettingFilePath);
        }
        string path = "Assets/SettingFiles/" + typeof(T)+ ".asset";//使用类  的名字
        ScriptableObject ob = ScriptableObject.CreateInstance(typeof(T));
        if (ob ==null)
        {
            Debug.LogError("cant creat file:" + typeof(T));
        }
        else
        {
            Debug.Log("Creat path:" +path);
            AssetDatabase.CreateAsset(ob, path);
        }
    }
}

该类负责创建asset文件,通过传入继承了scriptableObject 的类

 

最后是编辑器的:

 [MenuItem("ConfigFile/Create/LocalSetting")]
    public static void Create()
    {
        ConfigFile<LocalSettings>.CreatLocalFile();
        
    }

这样当在窗口点击localsetting按钮就可以创建asset文件了!

   Get到了吗?点个赞呗!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值