Time.timeScaleに依らないWaitForSeconds

UnityでTime.timeScaleに依らないWaitForSecondsを使いたい場合は、WaitForSecondsRealtimeというのが使えるそうです。

使い方はWaitForSecondsと同じ。

IEnumerator Example()
{
  Debug.Log("start");
  yield return new WaitForSecondsRealtime(5.0f);
  Debug.Log("end");
}

Time.realtimeSinceStartup使って自分で実装する手間は必要ないみたいです。

リンク

Unity – Scripting API: WaitForSecondsRealtime
https://docs.unity3d.com/ScriptReference/WaitForSecondsRealtime.html

UnityのスクリプトでUIを最前面や最背面に移動する方法

UnityのCanvas内に複数のUIがある場合、Hierarchyの順に重なって表示されるようになっています。 これを前面や背面に移動させたい場合は、Transform.SetAsLastSiblingTransform.SetAsFirstSiblingを使うと良いそうです。

// 最前面に移動
GetComponent<RectTransform>().SetAsLastSibling();

// 最背面に移動
GetComponent<RectTransform>().SetAsFirstSibling();

細かく順番を指定したい場合はTransform.GetSiblingIndexTransform.SetAsLastSiblingが使えるようです。

int index = GetComponent<RectTransform>().GetSiblingIndex();
GetComponent<RectTransform>().SetAsLastSibling(index);

リンク

Unity – Scripting API: Transform
https://docs.unity3d.com/ScriptReference/Transform.html