#c# #android #unity3d
#c# #Android #unity-игровой движок
Вопрос:
Я довольно новичок в разработке Unity. Я следил за многими различными руководствами по использованию собственных плагинов в Unity. Те, которые заключаются в компиляции.библиотеки dll и их запуск в редакторе работают просто отлично.
Но компиляция файла .so с использованием Android NDK и вызов его в скрипте C # в Unity кажется невозможной. Даже с этим тривиальным примером он всегда выдает исключение DllNotFoundException. Библиотека в этом примере не включает ничего другого, поэтому проблема не может быть в том, что мне не хватает дополнительных библиотек.
Я использую Unity 2018.3.7f1 и убедился, что библиотеки помечены как совместимые с Android, а также имеют набор сборки для Android. На моем компьютере установлена Windows 10.
[Редактировать] : Я пытался развернуть его на Samsung Galaxy s7. Устройство 64-разрядное, поэтому мне пришлось внести несколько изменений в редакторе Unity (выберите IL2CPP в настройках проигрывателя и т.д.) Я понимаю, что редактор Unity всегда будет выдавать ошибки, поскольку он не может обнаружить плагин Android. Однако результат в редакторе и на устройстве одинаковый, то есть пустой синий экран. Я полагал, что проблема заключалась в DllNotfound, но теперь я понимаю, что это может быть не так.
Ответ №1:
Вы пытаетесь запустить в редакторе? Если да, это вызовет исключение. Попробуйте выполнить сборку в мобильном
или вам нужно добавить зависящий от платформы код компиляции, чтобы он запускался без ошибок в редакторе
#if !UNITY_EDITOR
[DllImport("native")]
private static extern float add(float x, float y);
#endif
void OnGUI ()
{
float x = 3;
float y = 10;
#if !UNITY_EDITOR
GUI.Label (new Rect (15, 125, 450, 100), "adding " x " and " y " in native code equals " add(x,y));
#endif
}
Комментарии:
1. Действительно, именно в редакторе я вижу исключение DllNotFoundException. Однако при сборке на мобильном устройстве сообщение по-прежнему не отображается… Что заставляет меня поверить, что проблема та же.
2. Я также пробовал создавать 32 и 64-разрядные версии, чтобы посмотреть, помогло ли это. Похоже, что нет.
3. Я пробовал как в редакторе, так и на устройстве, и ни один из них не сработал