Сборка DLL для Unity с Mono - PullRequest
1 голос
/ 11 января 2020

Я использую JetBrains Rider, чтобы попытаться создать DLL для использования в Unity3d. У меня есть ClassLibrary проект с некоторыми классами внутри, которые наследуются от Monobehaviour, и я не могу найти или связать сборку Mono должным образом в ссылках.

Когда я собираю проект, я получаю эта ошибка:

TestScript.cs (8, 31): [CS0246] Не удалось найти имя типа или пространства имен 'Monobehaviour' (отсутствует директива using или ссылка на сборку?)

Кто-нибудь может мне помочь? Спасибо.

1 Ответ

3 голосов
/ 11 января 2020

Вы уверены, что хотите создать библиотеку классов? Обычно код для Unity добавляется непосредственно как активы файла сценария C# через интерфейс Unity, и все эти файлы находятся в папке Assets. Двойной щелчок по одному из этих файлов запустит ваш внешний редактор, например Rider или Visual Studio, сгенерированный для вас .csproj, содержащий все необходимые ссылки.

Если вы хотите разделить ваш проект Unity на меньшие, более управляемые части, вы можете использовать .asmdef Файлы определения сборки . Они также находятся в папке Assets и, по сути, сообщают Unity, что папка, в которой они находятся, должна быть скомпилирована в отдельную сборку и рассматриваться как отдельный проект C#.

Вы можете получить еще лучшее разделение и повторно используйте , создавая пакет . Они живут в папке Packages в root вашего проекта. Ваш пакет может содержать несколько .asmdef файлов, которые будут обрабатываться как несколько проектов / сборок. Вы также можете добавить пакет непосредственно с Git URL , такого как GitHub.

Недостатком создания сборки библиотеки классов для Unity является то, что вам необходимо вручную скопировать ее в Папка Assets, прежде чем Unity распознает ее и использует код внутри нее. Файлы определения пакетов и пакеты обычно являются лучшим способом решения этой проблемы.

Если вы все еще хотите создать проект библиотеки классов Unity, Rider поможет с шаблоном проекта - в диалоговом окне «Новый проект» вы можете выбрать «Библиотека классов Unity», и вы можете выбрать имя проекта, местоположение и, что более важно, выбрать местоположение UnityEngine.dll, которое будет добавлено в качестве ссылки. Rider найдет все установки Unity на вашей машине (если они находятся в стандартных местах) и предоставит вам выбор в выпадающем списке.

New solution dialog with Unity Class Library selected

Если у вас уже есть библиотека классов, в которую вы хотите добавить поддержку Unity, тогда вы можете добавить ссылку на UnityEngine.dll. Вам нужно будет найти файл, и он будет находиться в другом месте в зависимости от того, какая у вас ОС, и устанавливаете ли вы Unity вручную или с помощью Unity Hub. Например, на моей машине, когда я установил Unity через Unity Hub, файл находится в /Applications/Unity/Hub/Editor/2019.3.0f3/Unity.app/Contents/Managed/UnityEngine.dll. На Windows это будет по аналогичному пути в Program Files.

...