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.运行程序,直接读取信息:

转载于:https://www.cnblogs.com/Dean27/p/7879254.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值