UnityAcitivtyを表示する前にAndroid側の呼び出しからScene名を指定して、Scene切り替えられるか?を検証してみた。
以下をAddComponentしたObjectを適当にUnityでの起動時Sceneに配置する。
// SceneSystem.cs
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneSystem : MonoBehaviour
{
void ChangeScene(string sceneName)
{
SceneManager.LoadScene(sceneName);
}
}
MainUnityActivityのonCreateでstartActivity時にstringExtraでsceneNameを渡して、こんな感じでUnityPlayerのUnity.SendMessageを呼び出せば普通に遷移する。
// MainUnityActivity.java
public class MainUnityActivity extends OverrideUnityActivity {
// Setup activity layout
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addControlsToUnityFrame();
Intent intent = getIntent();
handleIntent(intent);
// これで、ちゃんとUnityのSplash後に遷移してた
String sceneName = intent.getStringExtra("sceneName");
if (sceneName != null && !sceneName.isEmpty()) {
UnityPlayer.UnitySendMessage("SceneSystem", "ChangeScene", sceneName);
}
}
...
}
UnityActivityをstartActivityしたときにUnityのSplashが表示されるので、Preload的な感じで読み込みをしたさはありますね。