在游戏项目中,常常会使用到用户信息,获取信息当然可以从数据库中获取。但是对场景多的游戏这样做是不正确的,那么我我们就需要再第一次获取用户信息之后,

同时在其它的场景中共享用户数据,避免对服务器增加负担。好的!现在上图

首先新建第一个场景,命名为one

场景中物体如下:

接着我们新建第二个场景:two

其中场景对象如下:

这样做一个简单的区分,以便测试。

制作思想:

在前一个场景中,添加新的EmptyGameObject,同时制作脚本PersistentData.cs,在脚本中添加一些全局变量。在游戏加载下一个场景的时候,使用

Object.DontDestroyOnLoad()方法进行保护。使得有关的数据得以持久化!

1、PersistentData.cs

using UnityEngine;
using System.Collections;

public class PersistentData : MonoBehaviour {

public  string userName="";
public  string pwd="";
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

if (Application.isLoadingLevel)
   Object.DontDestroyOnLoad(gameObject);
}

}

在场景one中,添加空游戏物体,同时附加如上的代码.

同时呢,在场景的相机上添加user.cs文件

代码如下

using UnityEngine;
using System.Collections;

public class user : MonoBehaviour {

public float width=0.0f;

public float height=0.0f;
public string levelName="";
private string _name="";
private string _pwd="";
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}

void OnGUI() {
 
GUILayout.BeginVertical(GUILayout.Width(200));
GUILayout.BeginHorizontal(GUILayout.Width(200));
GUILayout.Label("Name:");
_name= GUILayout.TextField(_name,10);
GUILayout.EndHorizontal();

GUILayout.BeginHorizontal(GUILayout.Width(200));
GUILayout.Label("passWord:");
_pwd= GUILayout.TextField(_pwd,10);
   GUILayout.EndHorizontal();

if (GUILayout.Button("login",GUILayout.Width(80),GUILayout.Height(60)))
{
//save data 保存数据到PersistentData的变量中
GameObject.Find("data").GetComponent<PersistentData>().userName = _name;
GameObject.Find("data").GetComponent<PersistentData>().pwd = _pwd;
Application.LoadLevel("two");
}
GUILayout.EndVertical();

}
}

然后在场景two中,给相机添加上PersistentDataGetting.cs文件

代码如下:

using UnityEngine;
using System.Collections;

public class PersistentDataGetting : MonoBehaviour {

private string userName="";
private string pwd="";

private PersistentData pdScript;
// Use this for initialization
void Start () {
 pdScript = GameObject.Find("data").GetComponent<PersistentData>();
 userName = pdScript.userName;
 pwd = pdScript.pwd;
}

// Update is called once per frame
void Update () {

}

void OnGUI(){

//用户信息显示
GUI.Label(new Rect(Screen.width/2,Screen.height/2,100,30),userName);
GUI.Label(new Rect(Screen.width/2, Screen.height/2+40,100,30), pwd);
}
}

最终效果:

结束语:

当然数据持久话的方式还有很多,这是其中一种,各有各的优缺点,要根据你存储的数据而定了。

欢迎大家加入梦想之家 游戏讨论群 63438968    175492844  

Enjoy!

unity3d 场景间数据传递的更多相关文章

  1. Unity场景间数据传递方法

    在游戏开发中,会常用到场景间传递数据的方法(比如关卡选择,过关后自动回到关卡选择界面,以动画方式解锁下一关),目前研究了三种: 1. 使用DontDestroyOnLoad方法: (1)在场景A中做个 ...

  2. 详细介绍ASP.NET页面间数据传递的使用方法

    源码:http://www.jinhusns.com/Products/Download/?type=xcj 在ASP.NET中,页面间数据传递的方法有很多.下面为大家总结一下,页面间数据传递的方法. ...

  3. ASP.NET页面间数据传递的方法<转>

    ASP.NET页面间数据传递的方法 作者: 灰色的天空2  来源: 博客园  发布时间: 2010-10-28 11:06  阅读: 822 次  推荐: 0   原文链接   [收藏]   摘要:本 ...

  4. ASP.NET中实现页面间数据传递的方法

    说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是向Session中添加的东西太多会增加服务器的压力,页面间数据传递,数据的作用范围越小越好.   ASP.NET页面间数据传递 ...

  5. ASP.NET 页面间数据传递的方法

    在做WEB开发时,很多地方会涉及到页面间的数据传递.这几天在完善教务基础系统,遇到了这个问题,上网查了一些资料,现总结如下: 说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是 ...

  6. [转]Angular2-组件间数据传递的两种方式

    本文转自:https://www.cnblogs.com/longhx/p/6960288.html Angular2组件间数据传递有多种方式,其中最常用的有两种,一种是配置元数据(或者标签装饰),一 ...

  7. Java并发:线程间数据传递和交换

    转自:https://www.cnblogs.com/java-zzl/p/9741288.html 一.通过SynchronousQueue方式实现线程间数据传递: 线程A与线程B共同持有一个Syn ...

  8. Angular2-组件间数据传递的两种方式

    Angular2组件间数据传递有多种方式,其中最常用的有两种,一种是配置元数据(或者标签装饰),一种是用单例模块传递:有两个元数据具有传递数据的功能:inputs和outputs. 一.元数据传递 1 ...

  9. vue 组件间数据传递

    父组件向子组件传值 方法一: 子组件想要使用父组件的数据,需要通过子组件的 props 选项来获得父组件传过来的数据. 1.父组件parent.vue中代码: <template> < ...

随机推荐

  1. RGB的三维模型与渐变色-颜色系列之一

    一.前言 以下与颜色相关的日志记录了俺学习颜色的有关容,限于编写时的水平,难免存在缺点与错误,希望得到朋友.同行和前辈的指教,非常感谢.1.  RGB的三维模型与渐变色-颜色系列之一2.  <颜 ...

  2. 一个备份MySQL数据库的简单Shell脚本(转)

    Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行.我们也可以逐一敲入命令手动执行.如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反 ...

  3. [转] 三步将你的 React Native 项目运行在 Web 浏览器上面

    React Native 的出现,让前端工程师拥有了使用 JavaScript 编写原生 APP 的能力.相比之前的 Web app 来说,对于性能和用户体验提升了非常多. 但是 React Nati ...

  4. [转] Scale-up 和Scale-out的区别

    http://www.cnblogs.com/spork/archive/2009/12/29/1634766.html 来自原小站,曾经迷糊过的东西,表上来,希望对正在迷糊或即将迷糊的人有帮助. 谈 ...

  5. Java基础知识强化之集合框架笔记43:Set集合之TreeSet存储Integer类型的元素并遍历

    1. TreeSet类概述: • 能够对元素按照某种规则进行排序. • 或者根据创建set时提供的Comparator进行排序 • 具体取决于使用的构造方法 2. 代码示例: package cn.i ...

  6. Python - BeautifulSoup 安装

    BeautifulSoup 3.x 1. 下载 BeautifulSoup. [huey@huey-K42JE python]$ wget http://www.crummy.com/software ...

  7. Http,Https (SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2 中文帮助文档 分类: ASP.NET 2014-10-28 14:09 177人阅读 评论(1) 收藏

    下载地址1:https://securityswitch.googlecode.com/files/SecuritySwitch%20v4.2.0.0%20-%20Binary.zip 下载地址2:h ...

  8. Android之提交数据到服务端方法简单封装

    在Android应用中,除了单机版的应用,其余的应用免不了需要频繁地与服务端进行数据交互,如果每一种方法都独立写一段代码,那会造成代码大量重复,冗余,这不是我们所希望的,所以我们可以对其进行一些封装, ...

  9. asp.net mvc 通过修改路由规则来实现页面的URL多参数传递

    [原文]http://blog.csdn.net/risingsun001/article/details/9068187 修改MVC3中的路由规则 在Global.asax.cs中,修改路由规则 原 ...

  10. cookie防篡改

    概述: 除了 session 外,一般不会在客户端的 cookies 里保存过于重要的凭据,但电商应用有时候不可避免地存储了一些敏感数据到客户端,当然不希望被篡改. 目的: 让服务器端能识别cooki ...