文本存储+类配置(C#)

配置文件格式如下图
第一行是列类型说明,第二行是描述,第三行是对应属性名称,用于反射,之后行是实际数据
\r\n换行,\t分列,单元格内依次由+、|分割

long string string[] string string int
sid 活动标题 活动图片 活动名字 活动描述 是否可见
id tittle icon name desc visible
1 每日签到领取大礼 签到 2
8 加官进禄 jiaguanjinjue_close+jiaguanjinjue_open+huodong_bg 加官进禄 1

类结构样式

public class ActivityConfig : Config
{public readonly long id;public readonly string tittle;public readonly string[] icon;public readonly string name;/// <summary>/// 描述;/// </summary>public readonly string desc;/// <summary>/// 是否可见 (0 不可见,1 可见 由活动界面打开,2 可见 独立界面)/// </summary>public readonly int visible;
}

核心逻辑:将文本文件split后每行是一个lineData,以id进行索引;需要读取对应行数据时,反射创建对应类,反射赋值后返回
可选优化:获取数据时可以指定列,不用一次全部反射;当属性被赋值后,删除lineData中对应的原始键值对

...
Dictionary<string, object> lineData;
...
Config instance = Assembly.CreateInstance(configType.FullName) as Config;
FieldInfo[] fields = instance.GetType().GetFields();
FieldInfo field;
for (int m = 0; m < fields.Length; m++)
{field = fields[m];field.SetValue(instance, lineData[field.Name]);
}
...
return instance

二进制存储+类配置(C#)

与上诉方案基本相同,除了使用二进制替换文本,故读取原始数据的方法略有不同

ScriptableObject(Unity)

这是Unity中最快最省GC的方案(怀疑Unity直接使用memcpy之类手段在内存中从二进制还原成class),但是对热更新支持并不好,可以用于存储结构不会变化的配置

PBC(lua)

项目使用lua开发,故尝试了云风的pbc,使用与protobuffer区别不大
在解析时,pbc做了一些优化,如果是内嵌的结构,不会直接解出来
下方代码中,解析Person时name、id、email会直接解析,phone却不会解析,仍然是原始数据,直到真正用到才会解析

package tutorial;message Person {required string name = 1;required int32 id = 2;        // Unique ID number for this person.optional string email = 3;message PhoneNumber {required string number = 1;optional int32 type = 2;}repeated PhoneNumber phone = 4;
}

pbc对多维数组支持不好,二维数组只能使用如下样式实现

  message arrInt {repeated int32 arr = 2;}repeated arrInt arrArrInt= 4;

解析后变成如下结构

arrArrInt = {{arr = {}},{arr = {}},...
}

需要额外操作才能转化为二维数组

lua文件

最终采用的方案,见这篇笔记

Unity游戏配置存储方案相关推荐

  1. Unity - 游戏加密方案-DLL加密方法记录

    Unity - 游戏加密方案-DLL加密方法记录 DLL加密 Unity中的自定义脚本都会打包到Assembly-CSharp.dll这个DLL中,所以目前常见的游戏加密方案就是,用对称加密算法加密A ...

  2. 计算机游戏配机方案,主流装机配置方案 3500元i5-7500配GTX1050游戏电脑配置清单推荐...

    时至今日,Intel第七代Kaby Lake处理器已经全面上市发售了,目前无论是入门还是中高端处理器深受玩家关注.随着新平台硬件日益普及,对于今后接下来的一年时间里新装机的朋友来说,新平台.新技术.新 ...

  3. 游戏型计算机配置方案4000,高性价比游戏配置 4000元i5-7500配GTX1050Ti电脑配置推荐 (全文)...

    时至今日,Intel第七代Kaby Lake处理器已经全面上市发售了,目前无论是入门还是中高端处理器深受玩家关注.随着新平台硬件日益普及,对于今后接下来的一年时间里新装机的朋友来说,新平台.新技术.新 ...

  4. 一个简单的游戏框架:配置表方案

    一个简单的游戏框架:配置表方案 代码:https://github.com/HushengStudent/myGameFramework 1.配置表格式 csv,逗号分隔,可以使用wps和Excel打 ...

  5. Unity游戏画面参数解析与应用:垂直同步、动态模糊、抗锯齿

    前言 最近会在B站刷到一些关于 30帧暴涨90帧! 高 中 低端显卡运行3A大作优化指南[干货向] 游戏画质设置教程 等等这样关于画面与性能调整的的视频,看完之后受益良多,UP主们经过实际测试获取到宝 ...

  6. Unity游戏优化[第二版]学习记录6

    以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...

  7. Unity游戏优化指南大全(持续更新中!)

    Unity游戏优化指南大全 三个官方优化提示: 性能和优化 (Performance and Optimization) - 关于性能分析器以及性能和优化技巧的 Unity 学习教程. Best pr ...

  8. 1.15 从0开始学习Unity游戏开发--游戏UI

    上一章中,我们剩下最后一个任务,需要支持鼠标控制准心来进行设计,那么准心本质上就是一个始终呈现在屏幕上的一个图片,你当然可以用一个3D物体来制作,之前讲解渲染概念的时候也提到过,我们的屏幕就是相机的近 ...

  9. Unity 游戏框架搭建 2018 (四) 我所理解的框架

    前言 架构和框架这些概念听起来很遥远,让很多初学者不明觉厉.会产生"等自己技术牛逼了再去做架构或者搭建框架"这样的想法.在这里笔者可以很肯定地告诉大家,初学者是完全可以去做这些事情 ...

最新文章

  1. numba 让python速度提升百倍
  2. 友商逼急 雷急跳墙:生死看淡 不服就干
  3. 2018年澳门就业情况理想 最新失业率维持1.7%
  4. PureMVC(AS3)剖析:设计模式(二)
  5. java nio集群_java – Hazelcast:连接到远程集群
  6. c#输出最大值、最小值和平均值(A)【C#】
  7. 啥?!BM25 比语义向量检索效果好?
  8. RSA的JavaScript程序
  9. Automatic Judge
  10. 揭秘盒马鲜生,如何打破收益增长天花板!
  11. 从滴滴亏109亿说起
  12. 基于 Flink 的实时数仓生产实践
  13. Linux 第12天: (08月19日) 练习和作业
  14. mysql 减函数_mysql时间加减函数
  15. 文本编辑控件FreeTextBoxFCKeditor下载地址
  16. python支持多种编程范式吗_理解真格量化的Python编程范式
  17. layui 之可搜索的下拉框select lay-serach
  18. ROS学习【3】-----ROS通信编程:小乌龟走正方形
  19. Openwrt如何添加SD_Card?看这里
  20. NFA转变为DFA的子集构造法

热门文章

  1. CVP0.M24、CVP0.M28、CVZ0.S08插装式单向阀
  2. display:flex flex-grow
  3. 华为也无奈,P20pro降到历史新低价,老用户:买太早
  4. 使用联想智能引擎的电脑,将会懂你的心思
  5. sql根据身份证号计算现在的年龄
  6. 使用稿定设计如何给制作好的视频加音乐?
  7. 我的科幻杂谈1:不读史,无以言
  8. 2021年编程课程网盘资料大汇总,限时领取!
  9. 美团外卖推荐系统之智能流量分发的实践与探索
  10. 最简单的ESP8266的Wifi智能小车车教程