Unity не добавляет ссылку на управляемую сборку, если она не помечена как для всех платформ
У меня есть собственный плагин Unity со следующей структурой:
Plugins/Android/Foo.jar
// Собственная библиотека AndroidPlugins/Android/Foo.Android.dll
// Управляемая оболочка Unity для доступа к стандартной подпрограмме Android (помечена как только для Android)Plugins/iOS/libFoo.a
// Собственная библиотека iOSPlugins/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 name
Bar 'не существует в пространстве имен 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, но при сборке используйте актуальные зависимые от платформы библиотеки.