Сериализация ссылок GameObject - PullRequest
0 голосов
/ 13 ноября 2018

Проект, над которым я работаю, имеет некоторые специфические требования к дизайну, и я пытаюсь найти решение, которое удовлетворяет им (и, вероятно, понимая, что «это невозможно»).

  1. 3Dмодели будут храниться в одном или нескольких наборах ресурсов, на которые будут ссылаться, так что будущие обновления могут быть переданы нескольким приложениям с минимальными усилиями (40 программ не нужно перекомпилировать).
  2. Пакеты активов считаются энергозависимымидо некоторой степени (они могут изменяться извне, чтобы можно было обновлять объекты 3D и текстур, обновления должны никогда не требовать перекомпиляции exe-файла Unity).
  3. Код не может быть включен вкомплекты ресурсов (по нескольким причинам; в первую очередь Unity не может запустить код, отсутствующий в его dll, поэтому ресурсы сценариев должны присутствовать в базовом приложении; также существует проблема накладных расходов: эти модели очень детализированы, сотни частей (буквально до отдельных винтов), каждый из которых может быть индивидуально неразрешимым).

Мне нужно найти способ, как редактора, так и среды выполнения, чтобы иметь возможность однозначно ссылаться на отдельные части 3D-ресурсов, чтобы разработчики приложений могли указать, какие биты должны иметь функциональные возможности и какого типа, в то время как во время выполненияПриложение должно быть в состоянии найти эти биты, чтобы применить функциональность.

Рассмотренные параметры и их недостатки:

  • Преобразование имен объектов иерархии.Сломается, если объект переименовывается, перемещается (переопределяется) или удаляется (возможно, если маловероятно, создает невидимые зависимости).Нарушает требование № 2.
  • Использование GUID.Требуется, чтобы у каждого объекта в иерархии был прикрепленный скрипт, хранящий информацию.Нарушает требование № 3.
  • Использование комплектов ресурсов как включенных (скомпилированных в проект) ресурсов.Нарушает требование № 1.
  • Адресуемые пакеты Unity.В настоящее время не готов к использованию, не будет готов вовремя к сроку поставки этого проекта.

1 Ответ

0 голосов
/ 14 ноября 2018

Я бы пошел с именами преобразований, но с изюминкой: перечислите преобразования в файле (JSON или что-то еще) и присвойте каждому GUID, а затем включите его в комплект. По сути, вы будете использовать опцию GUID, но без сценариев. Если иерархия изменится, вы можете просто отредактировать файл метаданных, чтобы он также удовлетворял требованию не перекомпилировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...