使用Ruby解析Unity YAML场景文件时出现语法错误&;心理
我试图用Ruby和Psych gem解析Unity YAML场景文件。Unity文件应该是YAML的一个子集。每个Unity对象都是一个单独的YAML文档。以下是一个示例:使用Ruby解析Unity YAML场景文件时出现语法错误&;心理,ruby,unity3d,yaml,Ruby,Unity3d,Yaml,我试图用Ruby和Psych gem解析Unity YAML场景文件。Unity文件应该是YAML的一个子集。每个Unity对象都是一个单独的YAML文档。以下是一个示例: %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 OcclusionCullingSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_OcclusionBakeSettings: sm
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
我正在用以下方法解析它:
require'psych'
scene=Psych.load\u stream(File.read.“/scene.unity”)
这将导致此错误消息:
Psych::SyntaxError(():在分析第13行第5列的节点时发现未定义的标记句柄)
在一些调查之后,PyCH认为每个YAML文档都有它自己的TAG指令,而Unity的YAML解析器必须考虑文件开始时的指令是全局的。所以
问题1:谁是对的?TAG指令的作用域是从声明扩展到文件的结尾,还是仅扩展到文档的结尾(下一次出现的--
)
我希望能够解析该文件而不必修改它。这导致
问题2:有没有一种干净的方法可以做到这一点?说一个我错过的心理选项,或者说一个将块传递到文件的方法。读取以便我可以动态添加标记指令