Единственный правильный способ добавления внешних DLL к единице в перечисленных выше испытаниях - это первый, любой другой метод не будет компилироваться / собираться или аварийно завершать работу во время выполнения (гарантировано).
Так как использоватьБиблиотека UWP в единице.
Для библиотеки C #
Если в ней указано Тип: «Управляемый» и Целевой показатель для некоторого .NET xy, то это.
![enter image description here](https://i.stack.imgur.com/sSxFs.png)
1-1: Если на предыдущем снимке экрана библиотека «Targets .NET 4.x» отредактировала настройки своего проекта для целевой .NET4.x ![enter image description here](https://i.stack.imgur.com/292Eh.png)
1-2: Снова на первом снимке экрана выберите библиотеку и отредактируйте «Включить»Платформы "с только UWP (WSA Player) выбранная платформа, любая другая платформа не будет работать, включая редактор.
1-3: Создайте свой проект, не пытаясь использовать библиотеку:
- Безопасно ли он собран? отлично, переходите к следующему шагу.
- Произошли ли ошибки? выясните, в чем причина и почему.
1-4: Так как это библиотека UWP, и для нее нет версии редактора единствавы не получите поддержку Intellesense, поэтому using Kinemic.Gesture
вызовет ошибки в редакторе, любой код в этой библиотеке должен быть заключен в директиву #if
для платформы UWP.
Директива #if
просто указывает Unity игнорировать этот код до тех пор, пока приложение не будет запущено при сборке на конкретной платформе, поскольку только тогда библиотека будет использоваться Unity, чтобы узнать больше: Компиляция, зависящая от платформы
Например:
#if UNITY_WSA
using Kinemic.Gesture;
#endif
using UnityEngine
public class SomeClass : MonoBehaviour
{
public void SomeFunction
{
#if UNITY_WSA
// call some code in the Kinemic.Gesture library.
#endif
}
}
Для родной библиотеки
Это немногонемного хитрее этого, но вы получаете всю интеллектуальную поддержку, она все равно будет работать только в сборке, хотя.
Один из способов - взаимодействовать с библиотекой из ваших скриптов Unity с помощью PInvoke, для получения дополнительной информации см. Unity плагинов Nativ
AnДругой способ, который мне нравится, это написать библиотеку C # для этой библиотеки C ++ и импортировать оболочку C # в единицы, это достигается с помощью:
- Создание проекта C # библиотеки классов (.NET Framework).
- Импорт Kinemic из nuget или путем добавления ссылки.
Начните с класса UnitKinemicWrapper, который выглядит следующим образом:
using Kinemic.Gesture;
public class UnityKinemicWrapper
{
public static void KinemicConnect(string band)
{
Kinemic.Gesture.Engine.Connect(band);
}
}
- Создайте свойБиблиотека обертки C # и импортируйте ее в unity.
- Сконфигурируйте ее с шагами в самом начале этого руководства по настройке библиотек C #, в дополнение к этому, укажите Unity, чтобы не обрабатывать эту библиотеку, сняв галочку с этихустановите флажки, затем нажмите «Применить».
![enter image description here](https://i.stack.imgur.com/TZhlf.png)
Еще один подход только для проектов UWP
Не импортируйте библиотеки Kinemic в Unity.
- Создайте свой проект Unity.
- Открыть созданный UWP проект.
- Оттуда cна единство, используя UnityEngine.GameObject.SendMessage, подробнее о SendMessage