코드 및 공부/입력 관리
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()의 값도 달라질 것이기에 변경사항을 추적하는 역할을 합니다