Unity中保存和讀取數據的類---PlayerPrefs


 一、認識 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.運行程序,直接讀取信息:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM