InputPreset.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. [CreateAssetMenu(fileName = "InputPreset", menuName = "ScriptableObjects/InputPreset", order = 1)]
  6. public class InputPreset : ScriptableObject
  7. {
  8. public InputPresetData data;
  9. }
  10. [System.Serializable]
  11. public class InputPresetData{
  12. public KeyCode leftInput;
  13. public KeyCode rightInput;
  14. public KeyCode jumpInput;
  15. }
  16. public static class InputManager{
  17. public static InputPresetData m_data;
  18. public static InputPresetData data(){
  19. if(m_data==null){Init();}
  20. return m_data;
  21. }
  22. public static void Init(){
  23. if(PlayerPrefs.HasKey("inputSettings")){
  24. Debug.Log("Trying to load input data : " + PlayerPrefs.GetString("inputSettings"));
  25. try{
  26. InputPresetData preset = JsonUtility.FromJson<InputPresetData>(PlayerPrefs.GetString("inputSettings"));
  27. m_data = preset;
  28. }catch(Exception error){
  29. Debug.Log("Error loading controls, Initiating default \n Error:" + error.Message);
  30. resetDefault();
  31. }
  32. }else{
  33. resetDefault();
  34. }
  35. }
  36. static void resetDefault(){
  37. m_data = new InputPresetData();
  38. m_data.leftInput = KeyCode.A;
  39. m_data.rightInput = KeyCode.D;
  40. m_data.jumpInput = KeyCode.Space;
  41. PlayerPrefs.SetString("inputSettings", JsonUtility.ToJson(m_data));
  42. PlayerPrefs.Save();
  43. }
  44. public static void Save(){
  45. PlayerPrefs.SetString("inputSettings", JsonUtility.ToJson(m_data));
  46. PlayerPrefs.Save();
  47. }
  48. }