/ kyokomi note / blog

UaalでAndroidからScene名を指定してUnitySceneを起動する

May 31, 2020 [Android | Unity]

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的な感じで読み込みをしたさはありますね。

last modified May 31, 2020

👋 Related posts in the uaal series...