Unity游戏配置存储方案
文本存储+类配置(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游戏配置存储方案相关推荐
- Unity - 游戏加密方案-DLL加密方法记录
Unity - 游戏加密方案-DLL加密方法记录 DLL加密 Unity中的自定义脚本都会打包到Assembly-CSharp.dll这个DLL中,所以目前常见的游戏加密方案就是,用对称加密算法加密A ...
- 计算机游戏配机方案,主流装机配置方案 3500元i5-7500配GTX1050游戏电脑配置清单推荐...
时至今日,Intel第七代Kaby Lake处理器已经全面上市发售了,目前无论是入门还是中高端处理器深受玩家关注.随着新平台硬件日益普及,对于今后接下来的一年时间里新装机的朋友来说,新平台.新技术.新 ...
- 游戏型计算机配置方案4000,高性价比游戏配置 4000元i5-7500配GTX1050Ti电脑配置推荐 (全文)...
时至今日,Intel第七代Kaby Lake处理器已经全面上市发售了,目前无论是入门还是中高端处理器深受玩家关注.随着新平台硬件日益普及,对于今后接下来的一年时间里新装机的朋友来说,新平台.新技术.新 ...
- 一个简单的游戏框架:配置表方案
一个简单的游戏框架:配置表方案 代码:https://github.com/HushengStudent/myGameFramework 1.配置表格式 csv,逗号分隔,可以使用wps和Excel打 ...
- Unity游戏画面参数解析与应用:垂直同步、动态模糊、抗锯齿
前言 最近会在B站刷到一些关于 30帧暴涨90帧! 高 中 低端显卡运行3A大作优化指南[干货向] 游戏画质设置教程 等等这样关于画面与性能调整的的视频,看完之后受益良多,UP主们经过实际测试获取到宝 ...
- Unity游戏优化[第二版]学习记录6
以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...
- Unity游戏优化指南大全(持续更新中!)
Unity游戏优化指南大全 三个官方优化提示: 性能和优化 (Performance and Optimization) - 关于性能分析器以及性能和优化技巧的 Unity 学习教程. Best pr ...
- 1.15 从0开始学习Unity游戏开发--游戏UI
上一章中,我们剩下最后一个任务,需要支持鼠标控制准心来进行设计,那么准心本质上就是一个始终呈现在屏幕上的一个图片,你当然可以用一个3D物体来制作,之前讲解渲染概念的时候也提到过,我们的屏幕就是相机的近 ...
- Unity 游戏框架搭建 2018 (四) 我所理解的框架
前言 架构和框架这些概念听起来很遥远,让很多初学者不明觉厉.会产生"等自己技术牛逼了再去做架构或者搭建框架"这样的想法.在这里笔者可以很肯定地告诉大家,初学者是完全可以去做这些事情 ...
最新文章
- numba 让python速度提升百倍
- 友商逼急 雷急跳墙:生死看淡 不服就干
- 2018年澳门就业情况理想 最新失业率维持1.7%
- PureMVC(AS3)剖析:设计模式(二)
- java nio集群_java – Hazelcast:连接到远程集群
- c#输出最大值、最小值和平均值(A)【C#】
- 啥?!BM25 比语义向量检索效果好?
- RSA的JavaScript程序
- Automatic Judge
- 揭秘盒马鲜生,如何打破收益增长天花板!
- 从滴滴亏109亿说起
- 基于 Flink 的实时数仓生产实践
- Linux 第12天: (08月19日) 练习和作业
- mysql 减函数_mysql时间加减函数
- 文本编辑控件FreeTextBoxFCKeditor下载地址
- python支持多种编程范式吗_理解真格量化的Python编程范式
- layui 之可搜索的下拉框select lay-serach
- ROS学习【3】-----ROS通信编程:小乌龟走正方形
- Openwrt如何添加SD_Card?看这里
- NFA转变为DFA的子集构造法