ゲームパッドで動かせるようになったよ~
— 咲良ゆず (@k_t_k_r_k) 2024年5月3日
十字キーはまだ反応しない pic.twitter.com/cMaMVoP3tf
カーソルを出したいのでこう
ゲームパッドで操作したいのでこう
決定した時(トグルがONになったとき)に次のパネルを出したり今のパネルを操作不能にしたり次のパネルの一番上のトグルを選択状態にしたりする
ToggleGroup丸ごとdisableにするメソッドが無さそうだったので作成(ありそうなもんだけど)
public void SetAllTogglesEnable(bool enable) { toggles.ForEach((Toggle toggle)=>{ toggle.enabled = enable; }); }
選択の結果をバトルマネージャで取得したいので こうで
こう
class ButtleManager : MonoBehaviour { public void receiveAction(){ Debug.Log("レシーブ"); } }
攻撃、防御、スキル、アイテム、いずれにせよターゲットの選択が一番最後なので、ターゲット選択用のトグルにだけこいつを設定する
最終的にそれぞれのToggleGroupからOnになっているToggleの値をかき集めてくればよい
BボタンとEscapeキーで前の選択肢に戻りたいのでこう
void Update() { if (Input.GetKeyDown(KeyCode.Escape) || Input.GetButtonDown("Fire2")) { Cancel(); } } public void Cancel() { Debug.Log("キャンセル"); ToggleGroupInherit toggleGroup = prevPanel.GetComponent<ToggleGroupInherit>(); // 操作不能にしていたパネルのトグルを復活させる toggleGroup.SetAllTogglesEnable(true); // 選択していたものがOn状態のままでは困るのでOffにする Toggle selected = toggleGroup.ActiveToggles().FirstOrDefault(); selected.isOn = false; // eventSystemで前のパネルの選択状態を復元 // ここでeventSystemを操作しないと十字キーとかで動かせなくなる eventSystem.SetSelectedGameObject(selected.gameObject); // このパネルを非表示にする selfPanel.SetActive(false); }
次は場に出ているキャラクターの状態(MP切れ、死亡など)によってボタンを増減させる話(時期未定)
追記: コード公開しました