Unity 小案例 加载新场景时数据持久化简单存储

来源:互联网 发布:当代网络小说家排行榜 编辑:程序博客网 时间:2024/05/17 00:18

这篇博客要实现的目标是,在第一个场景输入一些信息,然后加载第二个场景,同时能够把前面输入的数据加载进来。
新建一个2D项目,利用 InputField 和 Button 控件做出如下界面。
这里写图片描述

这需要我们填写姓名和密码,然后点击提交,跳转场景。
注意,填写密码的输入框要改成这样
这里写图片描述

给按钮添加一个名为 BtnSubmit 的脚本,编辑如下:

using UnityEngine;using UnityEngine.UI;using UnityEngine.SceneManagement;using System.Collections;public class BtnSubmit : MonoBehaviour {//获取输入框控件    public InputField inputName;    public InputField inputPWD;    //点击监听事件    public void SaveContent ()    {        //以键值对方式存值        PlayerPrefs.SetString("name", inputName.text);        PlayerPrefs.SetInt("pwd", int.Parse(inputPWD.text));        //根据名字加载场景        SceneManager.LoadScene("PlayerPrefs2");    }}

这里需要注意两点,1:密码设置的是整型(当然也可以设置成其他类型) 2:加载的第二个场景名为 PlayerPrefs2。所以我们在新建一个场景,名为PlayerPrefs2。利用Text 控件和 Button控件制作出如下界面:
这里写图片描述

Text中什么都不填写,因为要赋值进去。给摄像机添加一个名为 SetText 的脚本,并编辑:

using UnityEngine;using UnityEngine.UI;using System.Collections;public class SetText : MonoBehaviour {//得到两个文控件    public Text names;    public Text pwd;    // Use this for initialization    void Start () {        //根据键 取值,如果没有值,就赋上后面的默认值,也可以没有默认值        names.text = PlayerPrefs.GetString("name", "default");        pwd.text = PlayerPrefs.GetInt("pwd", 9).ToString();    }}

这只不过是给文本赋值的操作而已,我们还需要返回到上一个场景,所以,给按钮添加一个名为 Clear 的脚本,并编辑:

using UnityEngine;using UnityEngine.SceneManagement;using System.Collections;public class Clear : MonoBehaviour {    public void ClearContent ()    {        //如果存在键 name        if (PlayerPrefs.HasKey("name"))        {            //删除键 name            PlayerPrefs.DeleteKey("name");        }        //也可以直接删除所有键        PlayerPrefs.DeleteAll();        //返回上一个场景        SceneManager.LoadScene("PlayerPrefs");    }}

现在打开第一个场景然后运行就行了吗?
当然不行!!为什么??因为我运行过了,会报错!!
这里写图片描述

这个错误大概意思就是没有加载到第二个场景,也就是 PlayerPrefs2。这是为什么?明明就有这个场景的啊!!
好吧,我们继续读错误日志,后面大概意思说,需要到 Build Setting 中去添加场景。(虽然英语差了一点,但看关键字还是勉强可行的!更何况咱还有百度翻译,金山词典等等!!!)
于是赶紧点击 File —>Build Setting
这里写图片描述

点击 Add Open Scenes 就可以添加当前场景进去,另外一个场景可以手动拖进去。

然后打开第一个场景,运行程序,
这里写图片描述

这里写图片描述

可以看见效果了吧!

项目工程:http://pan.baidu.com/s/1kVF8CZX 密码:dvjf

0 0