12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 56593|回复: 10

[其他] unity3D游戏存档第一讲——PlayerPrefs类的用法

[复制链接]

25

主题

5

听众

358

积分

设计实习生

Rank: 2

纳金币
300
精华
0

最佳新人

发表于 2014-1-16 16:15:36 |显示全部楼层
     unity3d提供了一个用于本地持久化保存与读取的类——PlayerPrefs。工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。
    PlayerPrefs类支持3中数据类型的保存和读取,浮点型,整形,和字符串型。
    分别对应的函数为:
    SetInt();保存整型数据;
    GetInt();读取整形数据;
    SetFloat();保存浮点型数据;
    GetFlost();读取浮点型数据;
    SetString();保存字符串型数据;
    GetString();读取字符串型数据;
这些函数的用法基本一致使用Set进行保存,使用Get进行读取。下面根据一个例子来详细说明一下用法:
   首先打开unity3D,新建一个工程文件,然后在项目视图里面新建一个c#文件,命名为_Playerprefs  
   并输入一下代码:
      public class _Playerprefs : MonoBehaviour {
        public string set_NAME;
        public string get_NAME;
        void OnGUI()
        {
                GUILayout.BeginHorizontal("box");
                GUILayout.Label("姓名:");
                set_NAME=GUILayout.TextArea(set_NAME, 200,GUILayout.Width(50));
                if(GUILayout.Button("存储数据"))
                {

                       //将我们输入的姓名保存到本地,命名为_NAME ;
                        PlayerPrefs.SetString("_NAME", set_NAME);
                }
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal("box");
                if(GUILayout.Button("读取数据"))
                {

                        //读取本地数据中名称为_NAME 的数据;
                        get_NAME=PlayerPrefs.GetString("_NAME");
                }
                GUILayout.Label("你输入的姓名:"+get_NAME);
                GUILayout.EndHorizontal();
               

        }
}

分析一下这段代码,我们在输入框中输入一个名称,然后点击存储数据按钮,将数据存储到本地并且命名为_NAME ,然后点击读取数据按钮,从本地数据中找到名称为_NAME  的数据,并存放到我们定义好的变量get_NAME 中,然后用Label显示出来
运行结果如下:
QQ截图20140116155613.png


PlayerPrefs.SetString("_NAME", set_NAME); 这个方法中第一个参数表示存储数据的名称,第二的参数表示具体存储的数值。
get_NAME=PlayerPrefs.GetString("_NAME"); 这个方法中第一个数据表示读取数据的名称,本来还有第二的参数,表示默认值,如果通过数据名称没有找到对应的值,那么就返回默认值,这个值也可以写,则返回空值。
下面我们将这个简单的工程发布成EXE格式,打开我们发布好的EXE文件,在输入框里面输入张三。
如图:
QQ截图20140116160855.png


点击存储数据按钮,将数据存储到本地,然后关闭exe文件,
然后再打开,打开后点击读取数据:得到的结果如图:
QQ截图20140116161342.png


数据被我们从本地文件中读取出来了,完成了一次简单的存档操作。
在PlayerPrefs 类中还提供了PlayerPrefs.DeleteKey (key : string)删除指定数据;PlayerPrefs.DeleteAll() 删除全部键 ;PlayerPrefs.HasKey (key : string)判断数据是否存在的方法;




已有 1 人评分纳金币 收起 理由
ku + 5 很给力!

总评分: 纳金币 + 5   查看全部评分

回复

使用道具 举报

may    

8830

主题

80

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52296
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

发表于 2014-1-16 17:49:41 |显示全部楼层
不错的分享
回复

使用道具 举报

25

主题

5

听众

358

积分

设计实习生

Rank: 2

纳金币
300
精华
0

最佳新人

发表于 2014-1-16 17:52:37 |显示全部楼层
回复

使用道具 举报

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38266
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

发表于 2014-1-16 19:14:02 |显示全部楼层
呵呵,不错啊,期待后面的教程
回复

使用道具 举报

0

主题

1

听众

98

积分

设计初学者

Rank: 1

纳金币
248
精华
0

活跃会员 灌水之王

发表于 2014-4-9 16:12:17 |显示全部楼层
不错给力
回复

使用道具 举报

0

主题

1

听众

102

积分

设计实习生

Rank: 2

纳金币
3
精华
0

最佳新人

发表于 2014-8-5 11:26:24 |显示全部楼层
非常实用的例子的
回复

使用道具 举报

6

主题

3

听众

2195

积分

中级设计师

Rank: 5Rank: 5

纳金币
175
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

发表于 2014-10-8 10:29:09 |显示全部楼层
单级游戏用这个保存,游戏升级的时候,重新安装,这些保存的数据还有吗?
回复

使用道具 举报

1

主题

1

听众

45

积分

设计初学者

Rank: 1

纳金币
2
精华
0
发表于 2016-3-8 02:33:16 |显示全部楼层
good~~~~~~~
回复

使用道具 举报

0

主题

1

听众

46

积分

设计初学者

Rank: 1

纳金币
4
精华
0
发表于 2017-4-15 19:24:58 |显示全部楼层
楼主。请问下这个PlayerPrefs存储的东西会不会被系统删掉?
回复

使用道具 举报

0

主题

1

听众

40

积分

设计初学者

Rank: 1

纳金币
2
精华
0
发表于 2018-4-27 11:33:18 |显示全部楼层
多谢分享~~
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-3-29 21:00 , Processed in 0.104721 second(s), 45 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部