Unity не добавляет ссылку на управляемую сборку, если она не помечена как для всех платформ

У меня есть собственный плагин Unity со следующей структурой:

  • Plugins/Android/Foo.jar // Собственная библиотека Android
  • Plugins/Android/Foo.Android.dll // Управляемая оболочка Unity для доступа к стандартной подпрограмме Android (помечена как только для Android)
  • Plugins/iOS/libFoo.a // Собственная библиотека iOS
  • Plugins/iOS/Foo.iOS.dll // Управляемая оболочка Unity для доступа к стандартной подпрограмме iOS (помечена как только для iOS)

Когда я выбираю платформу Android или iOS и открываю свой проект Unity в MonoDevelop, он не добавляет ссылку на Foo.Android.dll. Та же ситуация для iOS. Также Unity Editor Console содержит ошибку о не ссылающихся классах, используемых в моем коде Unity за пределами плагина.

Assets/MainScript.cs(3,11): error CS0234: The type or namespace nameBar 'не существует в пространстве имен Foo'. Are you missing an assembly reference?

Когда меняются Foo.iOS.dll/Foo.Android.dll установка платформы в Any Platform до открытия MonoDevelop под iOS/Android соответственно он работает как положено.

Когда я создаю проект, он успешно создается как для iOS, так и для Android.

Где мне нужно разместить свои управляемые библиотеки или какие настройки я должен использовать, чтобы заставить Unity добавить соответствующие библиотеки в качестве ссылки при открытии проекта MonoDevelop?

Unity Editor 5.2.0f3, OS X Yosemite 10.10.5 (14F27)

1 ответ

Одно из возможных решений:

Unity Editor включает только библиотеки, помеченные как Editor чем проблема решена добавлением новой библиотеки заглушки в Plugins\X86\Foo.Editor.dll только с Editor целевая платформа выбрана.

После этого Unity добавь ссылку на заглушку Plugins\X86\Foo.Editor.dll при открытии проекта Mono Develop, но при сборке используйте актуальные зависимые от платформы библиотеки.

Другие вопросы по тегам