使用ScriptableObject创建.asset文件

.asset一般用来存储一些配置,比如SDK初始化的相关参数。

using System.Collections.Generic;
using UnityEngine;

namespace XXX
{
    [CreateAssetMenu(fileName="xxx", menuName="xxx")]
    public class CommonConfig : ScriptableObject
    {
        [HideInInspector]
        public List<string> Keys;

        [HideInInspector]
        public List<string> Values;

        [System.Serializable]
        public class Param
        {
            public string strA = "";
            public string strB = "";
            public string strC = "";
            public string strD = "";
        }

        public Param paramXXA = null;
        public Param paramXXB = null;

        private Dictionary<string, string> Map;

        private static CommonConfig instance;

        public static CommonConfig Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = (CommonConfig)ResourceManager.LoadAsset("assets/xxx.asset", typeof(CommonConfig));
                }

                return instance;
            }
        }

        private void Awake()
        {
            UpdateData();
        }

        private void UpdateData()
        {
            Map = new Dictionary<string, string>(Keys.Count);

            for (int i = 0; i < Keys.Count; i++)
            {
                Map.Add(Keys[i], Values[i]);
            }
        }

        public string Get(string key)
        {
            string value;
            if (Map.TryGetValue(key, out value))
            {
                return value;
            }

            return key;
        } 
    }
}

定义为public的变量就存储在xxx.asset中,通过 CommonConfig.Instance.Get 直接获取数据。

如果在运行时需要修改数据,需要使用下面的

EditorUtility.SetDirty(CommonConfig.Instance);
AssetDatabase.SaveAssets();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏你不就像风一样

两行代码玩转Spring Data排序和分页

在实际项目中对Spring Data的各种使用相当多,简单的增删改查Spring Data提供了现成的方法,一些复杂的,我们可以在接口方法写And,Not等关键...

1411
来自专栏菩提树下的杨过

[方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法

Guid ClsID = new Guid("d4ee9c52-8d68-4f33-9485-0926281c78ac"); IList<Guid> Ids =...

2155
来自专栏程序员与猫

Dapper连接与事务的简单封装

1112
来自专栏个人随笔

C#编写街道管理系统

项目需求: 一、语言和环境A、实现语言 C#B、环境要求 Visual Studio 2012 二、功能要求 现使用.NET WinForms技术为居委会开发...

4476
来自专栏领域驱动设计DDD实战进阶

领域驱动设计案例之仓储顶层实现

3265
来自专栏LeoXu的博客

org.apache.http.client.methods.HttpPost 两种消息体形式 —— UrlEncodedFormEntity 和 StringEntity

使用 UrlEncodedFormEntity 来设置 body,消息体内容类似于“KEY1=VALUE1&KEY2=VALUE2&...”这种形式,服务端接收...

2272
来自专栏跟着阿笨一起玩NET

树TreeView控件与DataTable交互添加节点(最高效的方法)

本文转载:http://blog.csdn.net/q107770540/article/details/7708418

3951
来自专栏程序员与猫

Dapper连接与事务的简单封装

增删改查方面,已经有Dapper.Extension这么强大的工具了,我也实在没啥好写的,就随手写了个看起来比较优雅的连接与事务的封装。在之后使用Dapper....

3027
来自专栏Kiba518

C#语法——await与async的正确打开方式

C#5.0推出了新语法,await与async,但相信大家还是很少使用它们。关于await与async有很多文章讲解,但有没有这样一种感觉,你看完后,总感觉这东...

773
来自专栏菩提树下的杨过

c#4.0中的动态编程

c#4.0中的dynamic早已不是新闻了,虽然内部用反射机制,略微会有一些性能上的额外开销,但是有些特殊场景还是很有用的,二害相权,取其轻吧(也正是因为这些动...

2068

扫码关注云+社区

领取腾讯云代金券