Unity UIのButtonをSelect状態にする方法
EventSystem
のSelectedGameObject
にGameObjectを指定することでSelect状態にできる。
EventSystem.current.SetSelectedGameObject(button.gameObject);
たとえば、Start()
時にButton
をSelect状態にしたいとき。
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIClass : MonoBehaviour
{
[SeializeField] private Button button;
private void Start()
{
EventSystem.current.SetSelectedGameObject(button.gameObject);
}
}
Button
以外でも、Toggle
、InputField
などSelectable
クラスを継承しているクラスは、この方法でSelect状態にできる。
Start()時に上手くSelect状態にならない時
タイミングで、Button
オブジェクトがまだ読み込まれていないうちにStart()
が呼ばれるとSetSelectedGameObject
がきかないときがある。
その時は、コルーチンで1フレーム待ってから、SetSelectedGameObject
を呼ぶ。
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using System.Collections;
public class UIClass : MonoBehaviour
{
[SeializeField] private Button button;
private void Start()
{
StartCoroutine("ForceSelect");
}
private IEnumerator ForceSelect()
{
yield return null; // 1フレーム待つ
EventSystem.current.SetSelectedGameObject(button.gameObject);
}
}
参考