首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四)
2012
05-01

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四)

  持久化简单的数据储存在Unity3D 中提供了一个简单有效的方法,如果之前的你做过Android的开发你会发现在Unity3D中持久化数据的储存和Android非常的想象。那么下面MOMO 将用一个简单有效的例子向大家介绍Unity3D中持久化数据。

首先我们须要熟悉一下Unity3D中的PlayerPrefs这个类。这个类中一共帮助我们封装了9个方法,用来数据的储存与读取。

 

举一个例子

 

我们发现它是以键值对的形式进行储存与读取,每一个Key对应一个Value,储存过后通过Key可以得到之前储存的Value。这里说一下GetString()方法中的第二个参数, 它代表默认值。意思是如果通过第一个参数的Key没有找到对应的Value的话GetString()方法就会返回我们写的第二个参数的默认值。怎么样?很简单吧~ 感觉和Android完全一样哈。


Unity3D默认的字体的 size 只有 16 ,这就意味了放在iPhone4 (960 X 640)上 字体会显示的非常小。字体的来源有很多,大家可以在互联网上下载,或者从自己的电脑中拷贝,在Mac电脑下字体放在 Finder -> 资源库 -> Fonts

 

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四) - 雨松MOMO程序研究院 - 1

 


我们可以看见电脑中存在了很多字体,我这里随便选一个,将 华文仿宋.ttf 用鼠标拖动到Project中。


选中: 华文仿宋

FontSize 30 :毫无疑问是字体的大小,这里写30让字体几乎放大1倍。

Character:  设置字体的文字编码 Unicode  ASCLL 编码

Style:设置字体的风格,粗体 斜体

 

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四) - 雨松MOMO程序研究院 - 2

 

点击Cretae ->GUISkin 创建一个GUI的皮肤,将 华文仿宋 拖动到箭头所指向的方向。发现下面存在很多GUI皮肤相关控件设置的,可以在这里设置每一个高级控件~大家可以手动的修改一下看看效果哈。

 

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四) - 雨松MOMO程序研究院 - 3

 

游戏场景在游戏制作中是一个非常重要的部分,因为任何一款游戏都是由若干的场景组成,Unity3D的游戏场景做的非常贴心。

创建2个游戏场景,一个是scene0 一个是scene1 ,本章的目标是在第一个游戏场景中保存一些基本游戏数据,然后切换到第二个场景中显示第一个场景中保存的数据,实现场景的切换已经数据的储存。

在scene0中创建一个c# 脚本名称为Scene0Main.cs 将它绑定在摄像头中。

Scene0Main.cs

Scene1Main.cs

File -> Build Settings 点击Add Current添加场景,这一步很重要,如果不添加的话在代码中切换场景会抛异常,盆友们还得注意一下~

 

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四) - 雨松MOMO程序研究院 - 4

 

build and run 导出运行项目,如下图所示我分别输入string int float 三种类型的数据,然后点击commit all ,将所有数据全部保存下来,游戏场景切换到scene1场景中。

 

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四) - 雨松MOMO程序研究院 - 5

 

切换到scene1中可以正常的显示scene0中储存的数值,点击clean all 将清空储存的所有信息后返回场景scene0,点击only return 直接返回场景scene0。

 

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四) - 雨松MOMO程序研究院 - 6

 

另外两个重要的方法

 

 

最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,总的来说这一章还是比较简单的,哇咔咔~~~ 附上Unity3D工程的下载地址,Xcode项目我就不上传了,须要的自己导出。

 

下载地址:http://download.csdn.net/detail/xys289187120/3806498

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之游戏场景的切换与持久化简单数据的储存(十四)》有 10 条评论

  1. [已注销] 说:

    请问一下PlayerPrefs.Set的存档在app版本更新后是否会被覆盖掉或者被删除

  2. 乾坤 说:

    如何检测当前游戏是第几关,然后下次继续游戏时载入上次检测的那一关?

  3. 陌上飞歌(Jackson) 说:

    话说在手机上是保存在哪里

  4. taecg 说:

    如果数据比较大的话一般用什么数据库呢?

  5. 杜甲同学 说:

    GUI.DrawTexture(new Rect((Screen.width – Imagetexture.width) >>1, 10, 120, 120), Imagetexture); 中的 >> 1是什么意思呢?

  6. felix kavin 说:

    看到场景切换,有个疑问,游戏中有很多和场景scene,unity3d是怎么知道先加载哪个场景的呢?求大侠解答!

    • 雨松MOMO 说:

      File-> build settings 在这里你会把所有场景Add Current 也就是把你所有的游戏场景注册进去, Unity首先加载的会是第0个场景。 如果你想切换显示的场景,直接在这里修改就可以,只要让想第一个显示的场景ID设置为0 就可以。。

  7. 这些变量是以什么形式储存的,类似hashmap?它的生命周期呢?我在unity里面跑,停止播放后再开,上次输入的值还在

留下一个回复

你的email不会被公开。