LoginSignup
0
0

More than 1 year has passed since last update.

【Unity】SetActiveSceneとUIの表示順について

Posted at

はじめに

1つのHierarchy上に複数のSceneが存在する場合の描画順や、ActiveSceneが切り替わった際のUIの描画順について気になったのでまとめてみました。

環境

OS : Windows10
Unity バージョン : 2021.3.2f1

SetActiveSceneとは

SceneManagerの関数で、引数で指定したSceneをHierarchy上でアクティブにします。

SetActiveScene (SceneManagement.Scene scene)

ここで言うアクティブというのは、LoadSceneでSceneを読み込むということではありません。
複数のSceneがHierarchy内にある場合、その内の1つがHierarchy上で太字になります。
(以下の場合は、Scene1がアクティブな状態)
image.png
このアクティブな状態というのは勝手に切り替わるわけではなく、例えば、Scene1がアクティブの状態でScene2内にあるUIを触ってもHierarchy上ではScene1がアクティブな状態のままになります。
そこで使用できるのがSetActiveSceneということになります。

使用例

現在触っているSceneによって処理を書き換えたい場合に使用できます。
例えば、SetActiveSceneを使用せずに以下の処理を実行しますと、最初のif文にしか入りませんが、SetActiveSceneを使用することで、Sceneごとに処理を分けることができます。

if(SceneManager.GetActiveScene().name == "Scene1")
{
    // Scene1でやりたい処理
}
else if(SceneManager.GetActiveScene().name == "Scene2")
{
    // Scene2でやりたい処理
}

UIの描画順

アクティブなSceneを切り替えたことによりUIの描画順が変わるかについてですが、結論、変わりません。
実際に以下の例で確認します。
Scene1にあるButton1を押すと、Button2を持つScene2が同じHierarchy内に表示されます。

image.png
image.png

このとき、アクティブなSceneはHierarchy上で太字になっているScene1です。しかし、UIはScene2のButton2がScene1のButton1より上に描画されています。
Button2を押すとSetActiveSceneでアクティブなSceneをScene2に切り替えていますが、描画順は変化しません。

image.png

Button1を押しても同様で、アクティブなSceneがScene1に切り替わりますが、描画順は変化しません。

image.png

まとめ

  • Sceneをアクティブな状態にするには、SetActiveSceneが使用できる
  • アクティブなSceneを切り替えても描画順に変化はない

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0