Интеграция Unity с Eclipse - Как следовать инструкциям «официального» учебника? - PullRequest
7 голосов
/ 26 января 2012

Я прочитал всю документацию о том, как интегрировать проекты Unity3D, ориентированные на Android, в Eclipse. Причина, по которой я хочу это сделать, заключается в том, чтобы иметь возможность вызывать Unity3D Activity в моем собственном «обычном» Android-приложении.

Что ж, я попытался выполнить шаги , перечисленные в этом руководстве . Используя все комбинации, которые я могу себе представить, я сделал следующее:

  1. Я использовал проект Unity для Android и создал его (в рамках Unity IDE), затем скопировал папку /Temp/StagingArea/ в другое место.

  2. Я создал новый проект Android, используя создание из существующих источников, установка местоположения папки StagingArea для копирования. Это было бы проект библиотеки Android. Проверьте "есть библиотека" по свойствам -> Android.

  3. Опять же, я создаю проект Android, импортирую созданный ранее Проект библиотеки Android и classes.jar.

  4. I переместить содержимое папки asset из проекта библиотеки в Проект "Активность". Он имеет две подпапки, bin и libs.

  5. Я изменяю сгенерированное действие для расширения UnityPlayerActivity и удалите строку setContent метода onCreate. Изменить пакет, соответствующий идентификатору пакета Unity Player.

  6. Добавьте соответствующие строки в манифест, в основном те, которые находятся на Проект библиотеки.

Таким образом, все компилируется без ошибок, и я могу запустить проект, показать заставку, а затем черный экран, корректно воспроизводя звуки моей сцены Unity. LogCat выявляет следующие ошибки:

01-26 16:51:46.415: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.415: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.415: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.415: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.415: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.415: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.415: I/Unity(2299): StopQCAR
01-26 16:51:46.415: I/Unity(2299): UnityEngine.Debug:Internal_Log(Int32, String, Object)
01-26 16:51:46.415: I/Unity(2299): UnityEngine.Debug:Log(Object)
01-26 16:51:46.415: I/Unity(2299): UnityEngine.MonoBehaviour:print(Object)
01-26 16:51:46.415: I/Unity(2299): TrackerBehaviour:StopQCAR()
01-26 16:51:46.415: I/Unity(2299): TrackerBehaviour:OnApplicationPause(Boolean)
01-26 16:51:46.415: I/Unity(2299):  
01-26 16:51:46.415: I/Unity(2299): (Filename: /Applications/buildAgent/work/842f9557127e852/Runtime/Export/Generated/UnityEngineDebug.cpp Line: 34)
01-26 16:51:46.425: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.425: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.425: I/Unity(2299): DllNotFoundException: QCARWrapper
01-26 16:51:46.425: I/Unity(2299):   at (wrapper managed-to-native) TrackerBehaviour:stopTracker ()
01-26 16:51:46.425: I/Unity(2299):   at TrackerBehaviour.StopQCAR () [0x00000] in <filename unknown>:0 
01-26 16:51:46.425: I/Unity(2299):   at TrackerBehaviour.OnApplicationPause (Boolean pause) [0x00000] in <filename unknown>:0 

Просто чтобы упомянуть ... прочитайте эти два вопроса SO: 1 и 2 . Кажется, они преуспели, поэтому можно выполнить следующие шаги (или аналогичные).

Я также нашел полезной эту тему на форуме Unity3D , которая в основном описывает тот же процесс в более ясной форме.

Кто-нибудь сталкивался с этой проблемой? Любое предложение или альтернатива?

Привет.

Ответы [ 3 ]

8 голосов
/ 24 июня 2012

Для всех, кто столкнулся с этим, интеграция Unity3d в проект затмения Android была нарушена в предыдущей версии (3.5)!

При использовании более новой версии Unity (успешно протестированной с 3.5.2) все снова работает нормально, следуя этим шагам .

Если вы хотите определить свою собственную деятельность или использовать Unity внутри фрагмента, вы можете напрямую использовать класс UnityPlayer. Для этого вы можете взглянуть на [UNITY_INSTALLATION] \ Editor \ Data \ PlaybackEngines \ androidplayer \ src \ com \ unity3d \ player , как упоминалось на форуме Unity .

Или просто попробуйте этот код, который работал для нас:

    UnityPlayer mPlayer = new UnityPlayer(getActivity()); // Put your activity object here
    int glesMode = mPlayer.getSettings().getInt("gles_mode", 1);
    boolean trueColor8888 = false;
    mPlayer.init(glesMode, trueColor8888);

    // Get the view - e.g. to return from the fragment method onCreateView:
    View view = mPlayer.getView();

Обновление: первая ссылка больше не доступна на странице поддержки unity3d, но запись на форуме также содержит все необходимые шаги!

1 голос
/ 27 января 2012

Я сталкиваюсь с тем же. обнаружил, что для интеграции с проектом Unity требуется еще кое-что, касающееся qcar это в основном связывание библиотек Qcar и изменение действий манифеста. посмотри здесь https://ar.qualcomm.at/arforums/showthread.php?t=1243

Однако, мне не очень помогает. все еще получаю ту же ошибку. немного застрял с ним.

0 голосов
/ 31 января 2012

На SO есть еще одна страница, задающая этот вопрос. Они утверждают, что получили ответы на форумах qualcomm, отличные от приведенных выше: Невозможно найти QCARWrapper

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...