UnityではPrefabのネストが使用できないため、複雑なUIのシーンでは、シーン内に多くのuGUI要素が含まれることになります。uGUIのテクスチャは、クオリティの問題から、高解像度かつRGBA32で格納されることが多いため、すぐにメモリ不足になります。

この問題は、UIごとに個別のシーンを作成し、LoadSceneMode.Additiveを使用することで解決することができます。

//シーンの追加読み込み
UnityEngine.SceneManagement.SceneManager.LoadScene( additive_scene, UnityEngine.SceneManagement.LoadSceneMode.Additive );
before_scene=additive_scene;

//シーンの破棄
if(before_scene!=""){
	SceneManager.UnloadSceneAsync(before_scene);
	before_scene="";
}

シーンを追加読み込みした場合も、各シーンからGameObject.Findを行い、シーン間のオブジェクトを参照することができます。また、シーンの追加読み込みは、iOS、Android共に数100ms程度で行うことができるため、通常のシーン読み込みが数秒かかることに比べると、かなり高速です。

ただし、UnityEngine.SceneManagement.LoadSceneMode.AdditiveはブロッキングAPIにもかかわらず、シーンの読み込みが1フレーム遅延するという問題があります。そのため、LoadSceneを実行した直後にGameObject.Findすると失敗するので、注意する必要があります。