zoukankan      html  css  js  c++  java
  • 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.运行程序,直接读取信息:

  • 相关阅读:
    浏览器页面呈现过程
    Function与Object
    前端性能优化方案
    CSS引入方式
    浏览器事件
    Js继承的实现方式
    H5页面 绝对定位元素被 软键盘弹出时顶起
    总结angular+ionic项目中的问题
    vue开发学习中遇到的问题以及解决方法
    css重修之书(一):如何用css制作比1px更细的边框
  • 原文地址:https://www.cnblogs.com/Dean27/p/7879254.html
Copyright © 2011-2022 走看看