Интеграция Unity3d с Android

Мне нужно создать приложение для Android, которое состоит из частей, написанных на Unity3d (анимация и т. Д.) И на AndroidSDK (по androidSDK я имею в виду несколько действий, написанных в Java, манифесте и ресурсах)

На самом деле у меня уже есть эти части (по крайней мере, макеты готовы =)) И я не могу понять, как общаться между ними.

Я прочитал много статей о интеграции Single3d android (в основном о вещах, называемых «плагинами») и не смог понять, как работает этот персонал = (Главное, что я понял (каждый из официальных официальных ссылок писал об этом), заключается в том, что документация о плагинах Очень плохой … =)

Единственный способ общения, который я могу понять, – сделать намерение (трансляцию) из сценария unique3d (используя AndroidJavaClass и AndroidJavaObject), чтобы моя деятельность (написанная в java) могла справиться с этим. Но что-то говорит мне, что это не лучшее решение …

Что я читал о проблеме, так это то, что мне нужно использовать JNI (который является родным интерфейсом java – ПОЧЕМУ?!? – зачем мне нужен собственный код?)

Мне нужно создать некоторый код среднего уровня в java, целью которого является общение с моей java-активностью, компиляция с помощью AndroidNDK и включение в мой проект Unity3d в качестве плагина? Как я могу написать этот средний слой? Нужно ли использовать UnityPlayer вместо «Activity» в качестве базового класса и почему?

Solutions Collecting From Web of "Интеграция Unity3d с Android"

Here is a tutorial on the basics of running Unity inside of a normal Android app .

Существует большой учебник по запуску Unity внутри Android Views . Как только вы начнете работать, вы можете легко вставлять сцены в любом месте своего приложения.

Когда вам нужно позвонить в приложение Java Android из Unity, вы можете добавить этот код:

 AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); 

А затем вы можете вызвать любой метод, который вы хотите в своей деятельности, через активность AndroidJavaObject. Что-то вроде этого:

 activity.Call("yourFunctionName", parameters); 

Для полной поддержки на Android вам не нужно создавать некоторый код среднего уровня в java.

Вместо этого вы должны:

  1. Создайте проект Lib на Android SDK.
  2. Создать 1 основную деятельность Расширяет UnityPlayerActivity
  3. Создайте другие действия, которые вам нужны, и добавьте их в манифест.
  4. Создать ресурс, макет …
  5. Экспортируйте в JAR и добавьте его в Unity, скопируйте все JAR, файл ресурсов в папку Assets / Plugins / Android.

Этот способ полезен для записи Push Push, в биллинге приложений и т. Д.

Ссылка # здесь: http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html (-> Расширение кода Java UnityPlayerActivity)

И кроме того, используя нижеприведенный код:

 AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); activity.Call("yourFunctionName", parameters); 

Вы можете делать большинство волшебных вещей с Android на Unity

Примечание *: yourFunctionName должно быть реализовано внутри вашей основной деятельности, которая простирается от UnityPlayerActivity (смотрите на шаге 2)

С Уважением,