Unity」カテゴリーアーカイブ

ゲームエンジン「Unity」に関するカテゴリーです。

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

「タッチデバイス」「マウス操作」両方に対応する場合に参考になりそうなドキュメント

Unityを使っていると、WindowsとAndroid/iOS両方に対応したゲームを作ることもあるかなと思います。その際、Windowsではマウス、Android/iOSではタッチデバイスが基本操作になってくると思いますが、どんな感じに対応すれば良いのか悩む場面もあるかもしれません。

Microsoftのドキュメントですが、そういう場合に参考になりそうな資料がこちらです。

Windows Touch Gestures Overview | Microsoft Docs
https://docs.microsoft.com/en-us/windows/desktop/wintouch/windows-touch-gestures-overview

一部を抜粋するとこんな感じ。

Tap ⇔ Click
Panning ⇔ Scrolling
Press ⇔ Right-click
Zoom ⇔ CTRL+Scroll

実際には、画面サイズとかいろいろ悩みの種はありますが、ビルド自体は簡単に通ってしまうところがUnityの利点かなと思います。

リンク

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

UnityのLighting設定をスクリプトから設定する方法

Lighting設定をスクリプトから設定したい場合はRenderSettingsを使うと良いそうです。
例えば、Ambient Intensityを設定する場合は次のような感じです。

RenderSettings.ambientIntensity = 2.0f;

リンク

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

Access Lighting window properties in Script ? – Unity Forum
https://forum.unity.com/threads/access-lighting-window-properties-in-script.328342/