родной плагин Android кажется непригодным

#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. Я пробовал как в редакторе, так и на устройстве, и ни один из них не сработал