코드 및 공부/입력 관리

Rebind한 키세팅 저장/초기화/되돌리기

ekrxjvpvj0110 2025. 3. 18. 21:51

유니티 버전 - 6000.0.40f1

 

 

 

 

 

목차


  • IUISettingChanger
  • 변경된 Rebind 저장

 

 

 

 

 

IUISettingChanger


키세팅뿐만 아니라 다른 세팅들의 변경사항을 제어하기위한 인터페이스입니다, 각 메서드는 저장/되돌리기/초기화의 역할을 담당하고, 하위의 개별 세팅에서 변경사항이 있을때 IsChanged를 이용하여, 설정 팝업을 끄거나 탭을 넘어갈때 미변경 사항을 체크하고 플레이어에게 되묻는 역할을 합니다 

public interface IUISettingChanger
{
    public void ImplementSetting();
    public void RevertSetting();
    public void ResetSetting(SystemData systemData);
    public bool IsChanged { get; }
}

 

 

 

 

 

변경된 Rebind 저장


public class ControlKeyInputSetting : MonoBehaviour, IUISettingChanger
{
    [SerializeField] private InputActionAsset inputActions;
    
    private string _baseBindingJson;
    
    public bool IsChanged => inputActions.SaveBindingOverridesAsJson() != _baseBindingJson;


    private void Awake()
    {
        _baseBindingJson = inputActions.SaveBindingOverridesAsJson();
    }


    public void ImplementSetting()
    {
        string currentBindings = inputActions.SaveBindingOverridesAsJson();
        
        // 실제 파일로 저장 로직
        
        _baseBindingJson =  currentBindings;
    }
    
    public void RevertSetting()
    {
        inputActions.LoadBindingOverridesFromJson(_baseBindingJson);
    }

    public void ResetSetting(SystemData systemData)
    {
        inputActions.RemoveAllBindingOverrides();
        
        _baseBindingJson = inputActions.SaveBindingOverridesAsJson();
    }
}

 

 

 

여기서 _baseBindingJson 변수의 역할은 개별 UIRebindAction에서 (아래 참고) InputAction을 수정하면 SaveBindingOverridesAsJson()의 값도 달라질 것이기에 변경사항을 추적하는 역할을 합니다