Я вообще новичок программирования и в Unity3D, и в Андроиде. Три месяца "купаюсь" в англ. доках по Unity 3D и всего лишь три дня в SDK для Андроид 3.1. Понял одно, что без доступа к SDK Андоид я не могу к примеру сделать нормальную связку работы Unity3D приложения и компонента WebView (но в этом вопросе я хочу разобраться сам)
Общие задачи, которые я не могу решить на простом конкретном примере.
1) Я не могу понять почему мой код не работает по чтению статического поля класса Toast:
Синтаксис:
Используется csharp
....
void OnGUI(){
if (GUI.Button(rectMainButton, strMainButton, GUI.skin.button)) {
strMainButton = "Buttun is Pressed";
strMainButton = (new AndroidJavaClass("android.widget.Toast")).GetStatic<int>("LENGTH_LONG").ToString();
strMainButton = "show";
}
}
....
void OnGUI(){
if (GUI.Button(rectMainButton, strMainButton, GUI.skin.button)) {
strMainButton = "Buttun is Pressed";
strMainButton = (new AndroidJavaClass("android.widget.Toast")).GetStatic<int>("LENGTH_LONG").ToString();
strMainButton = "show";
}
}
....
Результат по нажатию на кнопку должен быть как надпись на копке числа "1", а показывается "Buttun is Pressed". Т.е. даже не показывается "show". Т.е. сработало исключение... и до "show" дело вообще не дошло.
2) Я не знаю как проверять(как логировать) ошибки типа той которая закралась в пункте 1. Я могу только использовать косвенный метод определения "работает, то что я хотел или нет" по происходящим действиям. Может быть класс "android.widget.Toast" не находится?! Как бы это проверить?!
3) Я почитал англоязычную статью из официальных доков по Unity3D по созданию плагинов. Там для разных задач предлагают делать плагины с возможной поддержкой на нескольких языках. Говорят типа вы можете написать свой плагин и "делать звонки" функций на свои плагины. Да, но я не хочу создавать плагин из-за трёх строчек кода в первом пункте. Может быть вся проблема в том что класс "android.widget.Toast" не найден и нужно обращение к нему реализовывать в плагине и это вынужденная мера? Придётся наверно более подробно читать как писать этот плагин.
Если кому-то не в лом, ткните пальцем что я не так делаю.
4) Некоторые из разработчиков Unity3D прекрасно знают вот это дело.
Синтаксис:
Используется csharp
AndroidJavaClass jo_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo_currentActivity = jo_player.GetStatic<AndroidJavaObject>("currentActivity");
context_obj = jo_currentActivity.Call<AndroidJavaObject>("getApplication");
jo_currentActivity = jo_player.GetStatic<AndroidJavaObject>("currentActivity");
context_obj = jo_currentActivity.Call<AndroidJavaObject>("getApplication");
По различным экспериментам я понял, что эти строки кода исполняются корректно. Всего в com.unity3d.player четыре штуки Активов и почему-то текущий всегда "com.unity3d.player.UnityPlayerNativeActivity"
//C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\AndroidManifest.xml
Синтаксис:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest
- xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.unity3d.player"
- android:installLocation="preferExternal"
- android:versionCode="1"
- android:versionName="1.0">
- <supports-screens
- android:smallScreens="true"
- android:normalScreens="true"
- android:largeScreens="true"
- android:xlargeScreens="true"
- android:anyDensity="true"/>
- <application
- android:icon="@drawable/app_icon"
- android:label="@string/app_name"
- android:debuggable="true">
- <activity android:name="com.unity3d.player.UnityPlayerProxyActivity"
- android:label="@string/app_name"
- android:configChanges="keyboard|keyboardHidden|orientation">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name="com.unity3d.player.UnityPlayerActivity"
- android:label="@string/app_name"
- android:configChanges="keyboard|keyboardHidden|orientation">
- </activity>
- <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
- android:label="@string/app_name"
- android:configChanges="keyboard|keyboardHidden|orientation">
- <meta-data android:name="android.app.lib_name" android:value="unity" />
- </activity>
- <activity android:name="com.unity3d.player.VideoPlayer"
- android:label="@string/app_name"
- android:configChanges="keyboard|keyboardHidden|orientation">
- </activity>
- </application>
- </manifest>
Я не могу даже представить почему текущая Деятельность (Activity) в моем приложение имеет место быть (в приложении одна кнопка и камера). Смутно представляю в каких случаях применяются остальные Activity.true