// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖 using FairyGUI; using NBC; using NBF.Setting; using UnityEngine.InputSystem; namespace NBF { public partial class SettingInputItem : GButton { public InputOption Option; private InputActionRebindingExtensions.RebindingOperation rebindingOperation; private void OnInited() { BtnKeyboard.onClick.Set(OnClickRebind); onChanged.Add(SelfChanged); } public void SetData(InputOption option) { Option = option; TextName.SetLanguage(Option.Name); UpdateValueText(); } public void OnClickRebind() { // InputWaitingPanel.Show(true); // UI.Inst.OpenUI(); // 取消当前绑定 var settingPanel = App.UI.GetUI(); settingPanel.InputWait.visible = true; Option.InputAction.Disable(); // 开始重绑定操作 rebindingOperation = Option.InputAction.PerformInteractiveRebinding(Option.BindingIndex) .OnMatchWaitForAnother(0.1f) .OnComplete(operation => RebindComplete()) .OnCancel(operation => RebindCanceled()) .Start(); } private void RebindComplete() { rebindingOperation.Dispose(); UpdateValueText(); Option.InputAction.Enable(); var settingPanel = App.UI.GetUI(); settingPanel.InputWait.visible = false; // UI.Inst.HideUI(); // startRebindObject.SetActive(true); // waitingForInputObject.SetActive(false); } private void RebindCanceled() { rebindingOperation.Dispose(); Option.InputAction.Enable(); // UI.Inst.HideUI(); } private void SelfChanged(EventContext context) { if (!selected) { // RebindOver(); } } private void UpdateValueText() { BtnKeyboard.SetData(Option); } } }