一、認識 PlayerPrefs 類
1.PlayerPrefs 類的方法:
SetInt();保存整型數據;
SetString();保存字符串型數據;
SetFloat();保存浮點型數據;
GetInt();讀取整形數據;
GetFlost();讀取浮點型數據;
GetString();讀取字符串型數據;
2.使用PlayerPrefs 中的方法
using Framework.Common.Singleton; using System; using UnityEngine; public class MyPlayerPrefs :Singleton<MyPlayerPrefs> { public override void Init() { base.Init(); } /// <summary> /// 讀取 /// </summary> /// <param name="_path"></param> /// <returns></returns> public T Read<T>(string key) { T value = default(T); if (typeof(T) == typeof(int)) { int _value = PlayerPrefs.GetInt(key); value = (T)Convert.ChangeType(_value, typeof(int)); } else if (typeof(T) == typeof(string)) { string _value = PlayerPrefs.GetString(key); value = (T)Convert.ChangeType(_value, typeof(string)); } else if (typeof(T) == typeof(float)) { float _value = PlayerPrefs.GetFloat(key); value = (T)Convert.ChangeType(_value, typeof(float)); } return value; } public void Save<T>(string key, T value) { if (typeof(T) == typeof(int)) { int _value = (int)Convert.ChangeType(value, typeof(int)); PlayerPrefs.SetInt(key, _value); } else if (typeof(T) == typeof(string)) { string _value = (string)Convert.ChangeType(value, typeof(string)); PlayerPrefs.SetString(key, _value); } else if (typeof(T) == typeof(float)) { float _value = (float)Convert.ChangeType(value, typeof(float)); PlayerPrefs.SetFloat(key, _value); } } public void Save() { PlayerPrefs.Save(); } }
using UnityEngine; using Dean27_V4; using UnityEngine.UI; public class UIMyPlayerRresf : BaseUI { private InputField inputFieldName; private InputField inputFieldExp; private InputField inputFieldLv; private Dropdown dropDownSex; private Text textName; private Text textLv; private Text textExp; private Text textSex; private void Awake() { EventTriggerListener _saveTrigger = EventTriggerListener.Get(transform.Find("SaveButton").gameObject); _saveTrigger.SetEventTriggerHandle(EnumTouchEventType.OnClick, Save); EventTriggerListener _readTrigger = EventTriggerListener.Get(transform.Find("ReadButton").gameObject); _readTrigger.SetEventTriggerHandle(EnumTouchEventType.OnClick, Read); inputFieldName = transform.Find("InputField_Name").GetComponent<InputField>(); inputFieldExp = transform.Find("InputField_Exp").GetComponent<InputField>(); inputFieldLv = transform.Find("InputField_Lv").GetComponent<InputField>(); dropDownSex = transform.Find("Dropdown_Sex").GetComponent<Dropdown>(); textName = transform.Find("Info/Name").GetComponent<Text>(); textLv = transform.Find("Info/Lv").GetComponent<Text>(); textExp = transform.Find("Info/Exp").GetComponent<Text>(); textSex = transform.Find("Info/Sex").GetComponent<Text>(); } private void Read(GameObject _listener, object _args, object[] _params) { textName.text = MyPlayerPrefs.Instance.Read<string>("姓名"); textLv.text = MyPlayerPrefs.Instance.Read<int>("等級").ToString(); textExp.text = MyPlayerPrefs.Instance.Read<float>("經驗").ToString(); textSex.text = MyPlayerPrefs.Instance.Read<string>("性別"); } private void Save(GameObject _listener, object _args, object[] _params) { string name = inputFieldName.text; float exp = float.Parse(inputFieldExp.text); int lv = int.Parse(inputFieldLv.text); string sex = "男性"; if (dropDownSex.value == 1) { sex = "女性"; } MyPlayerPrefs.Instance.Save<string>("姓名", name); MyPlayerPrefs.Instance.Save<float>("經驗", exp); MyPlayerPrefs.Instance.Save<int>("等級", lv); MyPlayerPrefs.Instance.Save<string>("性別", sex); MyPlayerPrefs.Instance.Save(); } }
3.實際使用效果
1.輸入存儲的信息,並且讀取數據之后得到結果為:
2.運行程序,直接讀取信息: