UnityのUIでフォーカスを移したい場合はSetSelectedGameObject

UnityのUIを使っていて、フォーカスを変えたい場合はEventSystem.SetSelectedGameObjectを使ってみると良いみたいです。

使い方

EventSystem eventSystem;
eventSystemSetSelectedGameObject(gameObject);

Canvasを2重に表示していて、後ろ側になっているCanvasのボタンにフォーカスがある場合など、一見不可解な現象が起こる場合もあるので、注意して使ってみてください。

リンク

Unity – Scripting API: EventSystems.EventSystem.SetSelectedGameObject
https://docs.unity3d.com/2018.2/Documentation/ScriptReference/EventSystems.EventSystem.SetSelectedGameObject.html

関連記事

UIとGameObjectが重なっている場合の判定方法
Raycastを使ってGameObjectの選択をしているプログラムで、UIとGameObjectが重なっている場合に使える方法。 using UnityEngine.EventSystems EventSystem.current.IsPointerOverGameObject() リンク How to make UI block raycats (mobile) | Un...

UnityのUIでDrag and Drop
IBeginDragHandler, IDragHandler, IDropHandlerを継承するとOnBeginDrag, OnDrag, OnDropが使えようになるそうです。 public class Example : MonoBehaviour, IBeginDragHandler, IDragHandler, IDropHandler { public void OnBe...

オブジェクト位置に合わせてCanvas内に表示をする方法
Unityでオブジェクトの位置に応じてCanvas内に表示をしてみようと思って方法を探してみました。 Canvasに「Screen Space - Overlay」を設定している場合 RectTransformUtility.WorldToScreenPointを使うと簡単にできるようです。 具体的には、 Vector3 position; GetComponent (...

文字列に合わせたUI.Textのサイズを取得する方法
UnityのUI.Textで、実際にテキストを表示した際のサイズが知りたい場合はpreferredWidthやpreferredHeightを使って調べることができるそうです。 使い方 Text text; float width = text.preferredWidth; float height = text.preferredHeight; テキストのサイズに合わせて...