ButtonをLayoutGroupでいい感じに配置して終わりではって感じなんだけど、面倒なところが少しあったのでメモ
今回作っているゲームでは、基本的にマウスでUIは操作しないため、マウスの入力は無視したい。
マウス入力を無視するには、上に透明なレイヤをおいてそこでクリックを吸収する、とか他にも方法があるみたいだけど、今回はStandaloneInputModuleのマウス入力を無効化した。
using UnityEngine;
using UnityEngine.EventSystems;
class IgnoreMouseInputModule : StandaloneInputModule
{
public override void Process()
{
bool usedEvent = SendUpdateEventToSelectedObject();
if (eventSystem.sendNavigationEvents)
{
if (!usedEvent)
usedEvent |= SendMoveEventToSelectedObject();
if (!usedEvent)
SendSubmitEventToSelectedObject();
}
//無効化
//ProcessMouseEvent();
}
}
ボタンが選択されてない状態だと、カーソル移動が出来ず操作不能になるので最初から指定されたボタンを選択する。 後、選択状態でハイライトが適用されない場合があるので、対策する。
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class SetFirstSelectedObject : MonoBehaviour
{
public GameObject m_selectedGameObject;
private void OnEnable()
{
EventSystem.current.SetSelectedGameObject(m_selectedGameObject);
//ハイライト対策
m_selectedGameObject.GetComponent<Button>().OnSelect(null);
}
}