Repolode
hadashiA

hadashiA/VYaml

面向 .NET 和 Unity 的高性能、低内存分配 YAML 1.2 库,支持源码生成的序列化。

可替代:YamlDotNet

Star
481
Fork
41
未关闭 Issue
17
最近提交
3天前

这是什么?

VYaml 是用纯 C# 编写的 YAML 1.2 实现,适用于 .NET 和 Unity。它提供直接基于 UTF-8 字节处理的底层解析器和输出器,以及可在 YAML 与自定义 C# 类型之间互相转换的高层序列化接口。通过 [YamlObject] 特性,序列化代码由源码生成器在编译期生成,运行时无需依赖反射。

该库支持通过 YAML 标签、判别键或包装键识别的多态(Union),并支持键重命名、命名规范、必填成员、忽略默认值以及 [Flags] 枚举。单独的 VYaml.JsonSchema 包可以从 C# 类型生成 JSON Schema,让编辑器为手写的 YAML 提供补全和校验。项目同时支持 Native AOT 和裁剪发布,并兼容 Unity 场景文件中非标准的序列化 YAML 格式。

核心功能

  • 01基于 UTF-8 字节处理,解析和输出时内存分配少。
  • 02通过源码生成实现 YAML 与 C# 类型之间的序列化和反序列化。
  • 03支持接口和抽象类的多态映射,可按标签、判别键或包装键区分子类型。
  • 04可从 C# 类型生成 JSON Schema,为编辑器提供补全和校验。
  • 05内置 Unity 类型支持,并兼容 Native AOT 与裁剪发布。

适用场景

  • 在 Unity 项目中读取和保存以 YAML 存储的游戏或配置数据。
  • 在 .NET 服务或工具中读写 YAML 配置文件。
  • 解析体积较大且对内存分配和速度有要求的 YAML 文件。
  • 为手写的 YAML 配置提供基于 Schema 的编辑器校验。

快速上手

  1. 1

    从 NuGet 安装 VYaml 包

    dotnet add package VYaml
  2. 2

    在 Unity 中安装 NuGetForUnity,然后在 NuGet 窗口中安装 VYaml 包

使用前须知

  • 主要面向 Unity,要求 Unity 2021.3 或更高版本。
  • 仅大部分支持 YAML 1.2 规范。
  • 尚不支持节点树表示(已列入路线图)。
  • 枚举仅以简单字符串形式序列化。

收录于专题

标签

常见问题

VYaml 是什么?
面向 .NET 和 Unity 的高性能、低内存分配 YAML 1.2 库,支持源码生成的序列化。 VYaml 是用纯 C# 编写的 YAML 1.2 实现,适用于 .NET 和 Unity。它提供直接基于 UTF-8 字节处理的底层解析器和输出器,以及可在 YAML 与自定义 C# 类型之间互相转换的高层序列化接口。通过 [YamlObject] 特性,序列化代码由源码生成器在编译期生成,运行时无需依赖反射。
VYaml 可以免费使用吗?用的什么许可证?
VYaml 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
VYaml 还在维护吗?
活跃维护中。VYaml 最近一次提交是在 2026年11月5日。
VYaml 适合用来做什么?
在 Unity 项目中读取和保存以 YAML 存储的游戏或配置数据。 在 .NET 服务或工具中读写 YAML 配置文件。 解析体积较大且对内存分配和速度有要求的 YAML 文件。 为手写的 YAML 配置提供基于 Schema 的编辑器校验。
VYaml 怎么安装和运行?
从 NuGet 安装 VYaml 包: dotnet add package VYaml 在 Unity 中安装 NuGetForUnity,然后在 NuGet 窗口中安装 VYaml 包
在哪里获取 VYaml?
源代码和安装说明在 GitHub 上:https://github.com/hadashiA/VYaml

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目