前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用ScriptableObject创建.asset文件

使用ScriptableObject创建.asset文件

作者头像
meteoric
发布2018-11-20 11:08:01
1.4K0
发布2018-11-20 11:08:01
举报
文章被收录于专栏:游戏杂谈游戏杂谈

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

代码语言:javascript
复制
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 直接获取数据。

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

代码语言:javascript
复制
EditorUtility.SetDirty(CommonConfig.Instance);
AssetDatabase.SaveAssets();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档