Skip to content

Instantly share code, notes, and snippets.

@yashihei
Last active October 30, 2019 12:38
Embed
What would you like to do?
uGUIのButtonでキー操作(パッド操作)オンリーのUI構築メモ

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);
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment