C# 对象序列化成 Lua 代码
Lua Serialization
Lua Serialization 是一种轻量级的序列化工具,用于将 C# 对象序列化成 Lua 代码。它可以帮助你将 C# 中的实例对象保存为 Lua 代码形式的配置文件,方便在 Lua 环境中使用。这对于在 Unity3D + Lua 的游戏开发工作流中非常有用。
特点
- 支持将 C# 对象序列化成 Lua 代码。
- 支持多种数据类型的导出,包括基本类型(int、float、double、bool、string、enum、array),以及复杂类型如 List 和 Dictionary。
- 支持忽略某些字段的导出。
- 支持序列化前的预处理操作,例如在导出前初始化某些字段。
- 支持导出 Lua 原生代码(如 Lua 函数和自定义枚举)。
- 自定义导出格式。
使用说明
基本用法
数据类定义:
1 | public class People |
序列化处理:
1 | People people = new People() |
输出结果:
1 | { |
进阶用法
一、序列化前的预处理操作
通过实现 IBeforeLuaSerialization
接口,并在 OnBeforeLuaSerialize()
方法中添加预处理逻辑。
数据类定义:
1 | public class People : IBeforeLuaSerialization |
序列化处理:
1 | People people = new People() |
输出结果:
1 | { |
二、Lua 原生代码导出
需要导出 Lua 原生代码的字段,只需在字符串前加上 @
标记。
数据类定义:
1 | public class People |
序列化处理:
1 | People people = new People() |
输出结果:
1 | { |
三、自定义导出格式
实现 ILuaSerializable
接口,并在 SerializeToLua()
方法中定义自定义导出逻辑。
数据类定义:
1 | public class People |
序列化处理:
1 | People people = new People() |
输出结果:
1 | { |
代码仓库
一个无第三方依赖的轻量级 C# 序列化成 Lua 代码的工具 Lua Serialization:https://github.com/DavidSheh/LuaSerialization。