public void LoadKeybinds() { if (PlayerPrefs.HasKey("ControlOverrides")) { BindingWrapperClass bindingList = JsonUtility.FromJson(PlayerPrefs.GetString("ControlOverrides"), typeof(BindingWrapperClass)) as BindingWrapperClass; Dictionary <Guid, string> overrides = new Dictionary <Guid, string>(); foreach (var item in bindingList.bindingList) { overrides.Add(new Guid(item.id), item.path); } foreach (var map in actions.actionMaps) { var bindings = map.bindings; for (var i = 0; i < bindings.Count; ++i) { if (overrides.TryGetValue(bindings[i].id, out string overridePath)) { map.ApplyBindingOverride(i, new InputBinding { overridePath = overridePath }); } } } } }
public void LoadPlayerBindings() { if (PlayerPrefs.HasKey("ControlOverrides")) { BindingWrapperClass bindingList = JsonUtility .FromJson(PlayerPrefs.GetString("ControlOverrides") , typeof(BindingWrapperClass)) as BindingWrapperClass; foreach (var map in InputActions.asset.actionMaps) { var bindings = map.bindings; for (var i = 0; i < bindings.Count; ++i) { if (!bindingList.bindings .Exists(obj => obj.id == bindings[i].id.ToString())) { continue; } BindingSerializable overrideBind = bindingList.bindings .Find(obj => obj.id == bindings[i].id.ToString()); map.ApplyBindingOverride(i, new InputBinding { overridePath = overrideBind.path }); } } } }
/// <summary> /// Loads control overrides from playerprefs /// </summary> public void LoadRebinds() { if (PlayerPrefs.HasKey("ControlOverrides")) { BindingWrapperClass bindingList = JsonUtility.FromJson(PlayerPrefs.GetString("ControlOverrides"), typeof(BindingWrapperClass)) as BindingWrapperClass; //create a dictionary to easier check for existing overrides Dictionary <System.Guid, string> overrides = new Dictionary <System.Guid, string>(); foreach (var item in bindingList.bindingList) { overrides.Add(new System.Guid(item.id), item.path); } //walk through action maps check dictionary for overrides foreach (var map in playerInput) { var bindings = map.bindings; for (var i = 0; i < bindings.Count; ++i) { if (overrides.TryGetValue(bindings[i].id, out string overridePath)) { //if there is an override apply it map.ApplyBindingOverride(i, new InputBinding { overridePath = overridePath }); } } } } }
/// <summary> /// stores the active control overrides to player prefs /// </summary> public void StoreControlOverrides () { //saving BindingWrapperClass bindingList = new BindingWrapperClass (); foreach ( var map in control.actionMaps ) { foreach ( var binding in map.bindings ) { if ( !string.IsNullOrEmpty ( binding.overridePath ) ) { bindingList.bindingList.Add ( new BindingSerializable ( binding.id.ToString (), binding.overridePath ) ); } } } PlayerPrefs.SetString( "ControlOverrides", JsonUtility.ToJson ( bindingList ) ); Debug.Log(PlayerPrefs.GetString ( "ControlOverrides" )); PlayerPrefs.Save (); }
public void SavePlayerBindings() { BindingWrapperClass bindingList = new BindingWrapperClass(); foreach (var map in InputActions.asset.actionMaps) { foreach (var binding in map.bindings) { if (!string.IsNullOrEmpty(binding.overridePath)) { bindingList.bindings.Add(new BindingSerializable(binding.id.ToString() , binding.overridePath)); } } } PlayerPrefs.SetString("ControlOverrides", JsonUtility.ToJson(bindingList)); PlayerPrefs.Save(); }