Анализ контроллера Unity3D Animator приводит к исключению SemanticErrorException

Я работаю над сценарием С# для изменения контроллеров анимации в Unity3D 4.1 из кода. Поэтому я разбираю контроллер с помощью синтаксического анализатора YamlDotNet yaml, но сталкиваюсь с ошибкой при попытке разобрать файл контроллера.

Я попробовал это с другими примерами yaml, и он отлично работает, но у контроллеров есть некоторые специальные теги рядом с ---, которые, похоже, заставляют синтаксический анализатор запускать исключение SemanticErrorException.

См. следующий код, который представляет некоторые строки yaml-файла AnimationController:

%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
(...)
--- !u!1101 &110100000

Разбор файла, похожего на следующий пример, работает просто отлично:

%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
---
AnimatorController:
(...)
---

Я искал решение в спецификации yaml для 1.1. и 1.2, но я до сих пор не понимаю, что представляют собой эти теги и как они интерпретируются.

yaml.org/spec/1.1/

yaml.org/spec/1.2/

Может ли кто-нибудь объяснить мне эти теги и, возможно, также, как я все еще могу анализировать AnimationController с помощью синтаксического анализатора без необходимости написания собственного синтаксического анализатора yaml.

Любая помощь приветствуется! Спасибо!

Приветствует

Томас


person Thomas Mondel    schedule 19.06.2013    source источник


Ответы (2)


Как насчет использования класса AnimatorController в UnityEditorInternal? Он предоставляет все методы, необходимые для создания и изменения ресурсов AnimatorController, и все также кажется общедоступным. Кажется, это лучший подход, чем изменение кода Yaml, тем более что у вас нет кода Yaml в Unity Free, который не поддерживает режим текстовой сериализации ресурсов.

Кроме того, API, вероятно, более стабилен, чем формат сериализации.

person Jan Thomä    schedule 20.06.2013
comment
Спасибо за ваш вклад, Ян, я рассмотрю его и дам отзыв соответственно, если он работает для моих требований. - person Thomas Mondel; 20.06.2013

возникла та же проблема с разбором yaml сцены единства.

Может кто-нибудь объяснить мне эти теги

из Руководства Unity>Дополнительно>Формат файла текстовой сцены>Описание формата

--- !u!1 &6 ... Первая строка содержит строку "!u!1 &6" после маркера документа. Первая цифра после "!u!" часть указывает на класс объекта (в данном случае это GameObject). Число, следующее за амперсандом, представляет собой идентификационный номер объекта, который уникален в пределах файла, хотя номер назначается каждому объекту произвольно.

Я предполагаю, что это нестандартный Yaml?

person Logan Bender    schedule 08.05.2014