Управляемые плагиныНабор кода, созданный вне Unity, который создает функциональность в Unity. В Unity можно использовать два типа подключаемых модулей: управляемые подключаемые модули (управляемые сборки .NET, созданные с помощью таких инструментов, как Visual Studio) и собственные подключаемые модули (библиотеки собственного кода для конкретной платформы). Подробнее
См. в Словарь .NET сборки, которые вы создаете и компилируете вне Unity, в динамически подключаемую библиотеку (DLL) с такими инструментами, как Visual Studio.
Это процесс, отличный от стандартных скриптов C#фрагмент кода, который позволяет создавать собственные компоненты, запускать игру событий, изменяйте свойства компонентов с течением времени и реагируйте на ввод пользователя любым удобным для вас способом. Подробнее
См. в Словарь, которые Unity хранит как исходные файлы в папку Assets в вашем проекте Unity. Unity компилирует стандартные скрипты C# всякий раз, когда они изменяются, тогда как библиотеки DLL предварительно компилируются и не изменяются. Вы можете добавить скомпилированный файл .dll в свой проект и присоединить содержащиеся в нем классы к GameObjectsфундаментальному объекту в Unity. сцены, которые могут представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь так же, как и стандартные скрипты.
Дополнительные сведения об управляемом коде на C# см. в документе Microsoft Что является управляемым код? документация.
Управляемые подключаемые модули содержат только код .NET, что означает, что они не могут получить доступ к каким-либо функциям, которые не поддерживаются библиотеками .NET. Однако управляемый код доступен для стандартных инструментов .NET, которые Unity использует для компиляции скриптов.
При работе с библиотеками DLL в Unity необходимо выполнить больше шагов, чем при работе со сценариями. Однако бывают ситуации, когда может оказаться полезным вместо этого создать и добавить файл .dll в свой проект Unity, например:
- Вы хотите использовать в своем коде компиляторы, которые Unity не поддерживает.
- Вы хотите добавить сторонний код .NET в файл .dll.
- Вы хотите предоставить код Unity без исходного кода.
На этой странице объясняется общий метод, который можно использовать для создания управляемых подключаемых модулейуправляемой сборки .NET, созданной с помощью такие инструменты, как Visual Studio, для использования в Unity. Подробнее
См. в Словарь, а также о том, как создавать управляемые подключаемые модули. ins и настройте сеанс отладки с помощью Visual Studio.
Создание управляемого подключаемого модуля
Чтобы создать управляемый подключаемый модуль, необходимо создать библиотеку DLL. Для этого вам понадобится подходящий компилятор, например:
Не все компиляторы, создающие код .NET, совместимы с Unity, поэтому вам следует протестировать компилятор с некоторым доступным кодом, прежде чем выполнять с ним существенную работу. Метод, который вы используете для создания DLL, зависит от того, содержит ли DLL код Unity API:
- Если библиотека DLL содержит код API Unity, перед компиляцией необходимо сделать собственные библиотеки DLL Unity доступными для компилятора:
- Чтобы найти библиотеки DLL Unity:
- В Windows перейдите по адресу:
C:\Program Files\Unity\Hub\Editor\<номер-версии>\Editor\Data\Managed\UnityEngine
- В macOS:
- Найдите файл
Unity.app
на своем компьютере. Путь к библиотекам DLL Unity в macOS:/Applications/Unity/Hub/Editor/<номер-версии>/Unity.app/Contents/Managed/UnityEngine
- Щелкните правой кнопкой мыши
Unity.app
. - Выберите Показать содержимое пакета.
- Найдите файл
- В Windows перейдите по адресу:
- Папка
UnityEngine
содержит файлы .dll для ряда модулей. Ссылайтесь на них, чтобы сделать их доступными для вашего сценария. Для некоторых пространств имен также требуется ссылка на скомпилированную библиотеку из проекта Unity (например,UnityEngine.UI
). Найдите это в каталоге папки проекта:~\Library\ScriptAssemblies
- Чтобы найти библиотеки DLL Unity:
Если библиотека DLL не содержит кода API Unity или вы уже сделали библиотеки DLL Unity доступными, следуйте документации вашего компилятора, чтобы скомпилировать файл .dll. Конкретные параметры, которые вы используете для компиляции DLL, зависят от компилятор, который вы используете. Например, командная строка для компилятора Roslyn,
csc
, может выглядеть в macOS следующим образом:
csc /r:/Applications/Unity/Hub/Editor/<номер-версии>/Unity.app/Contents/Managed/UnityEngine.dll /target:library /out:MyManagedAssembly. dll /recurse:*.cs
В этом примере:
- Используйте параметр
/r
, чтобы указать путь к библиотеке для включения в сборку, в данном случаеUnityEngine
библиотека. - Используйте параметр
/target
, чтобы указать тип требуемой сборки; «библиотека» означает сборку DLL. - Используйте
/out
, чтобы указать имя библиотеки, в данном случае "MyManagedAssembly.dll". - Добавьте имена исходных файлов, которые необходимо включить. Используйте метод
/recurse
, чтобы добавить все файлы, оканчивающиеся на «.cs», в ваш текущий рабочий каталог и любые вложенные папки. Полученный файл .dll появится в той же папке, что и исходные файлы.
Использование управляемого подключаемого модуля
После того как вы скомпилировали DLL, вы можете перетащить файл .dll в проект Unity, как и любой другой ресурс. Затем вы можете:
- Разверните управляемый подключаемый модуль, чтобы просмотреть отдельные классы внутри библиотеки.
- Перетащите классы, производные от MonoBehaviour, в игровые объекты.
- Используйте классы, отличные от MonoBehaviour, напрямую из других скриптов.
Создание библиотеки DLL с помощью Visual Studio
В этом разделе объясняется:
- Как создать простой пример библиотеки DLL и интегрировать его в Visual Studio
- Как подготовить сеанс отладки для библиотеки DLL в Unity.
Настройка проекта
- Откройте Visual Studio и создайте новый проект.
- Выберите Файл > Создать > Проект > Visual C# > .Net Standard > Библиотека классов (стандарт .NET).
- Добавьте в новую библиотеку следующую информацию:
-
Имя: пространство имен (в этом примере используйте
DLLTest
в качестве имени). - Расположение: родительская папка проекта.
- Имя решения: папка проекта.
-
Имя: пространство имен (в этом примере используйте
- Сделайте библиотеки DLL Unity доступными для вашего сценария. В Visual Studio откройте контекстное меню Ссылки в обозревателе решений и выберите Добавить ссылку > Обзор > Выбрать файл.
- Выберите нужный файл .dll, расположенный в папке UnityEngine.
Написание кода DLL
- Для этого примера переименуйте класс по умолчанию в
MyUtilities
в браузере решений. - Замените его код следующим:
using System;
using UnityEngine;
namespace DLLTest {
public class MyUtilities {
public int c;
public void AddValues(int a, int b) {
c = a + b;
}
public static int GenerateRandom(int min, int max) {
System.Random rand = new System.Random();
return rand.Next(min, max);
}
}
}
- Создайте проект для создания файла DLL вместе с его отладочными символами.
Отладка библиотеки DLL в Unity
Чтобы настроить сеанс отладки для DLL в Unity:
- Создайте новый проект в Unity и скопируйте созданный DLL-файл (например,
<папка проекта>/bin/Debug/DLLTest.dll
) в папку Assets. - Создайте скрипт C# под названием Test в папке Assets.
- Замените его содержимое сценарием, который создает новый экземпляр класса, созданного вами в вашей библиотеке DLL, использует его функции и отображает вывод в окне Консоли. Например, чтобы создать тестовый скрипт для библиотеки DLL из раздела выше, скопируйте следующий код:
using UnityEngine;
using System.Collections;
using DLLTest;
public class Test : MonoBehaviour {
void Start () {
MyUtilities utils = new MyUtilities();
utils.AddValues(2, 3);
print("2 + 3 = " + utils.c);
}
void Update () {
print(MyUtilities.GenerateRandom(0, 100));
}
}
- Прикрепите этот скрипт к игровому объекту в СценеСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Просмотрите Словарь и нажмите "Воспроизвести".
Unity отображает вывод кода из DLL в окне консоли
Компиляция небезопасного кода C#
Небезопасный код C# — это код, имеет прямой доступ к памяти. По умолчанию он не включен, поскольку компилятор не может убедиться, что он не создаст угрозы безопасности.
Вы можете использовать небезопасный код для:
- Доступ к памяти с помощью указателей.
- Выделить необработанную память.
- Вызывать методы с помощью указателей.
Чтобы включить поддержку компиляции небезопасного кода C#, перейдите в раздел Правка > Настройки проекта > Проигрыватель > Другие настройки. и включите Разрешить небезопасный код.
Дополнительные сведения см. в документации Microsoft по небезопасному коду. .