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  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.CreatLocalFile();
        
    }

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

   Get到了吗?点个赞呗!!

你可能感兴趣的:(知识点,代码)