方法一:
You can use Object.DontDestroyOnLoad to stop an object from being destroyed after the new level begins. You can find the object in the new scene and it will still have all data intact.
方法二:
The "Session" Class":
Code:
using System;
using System.Runtime.CompilerServices;
using System.Collections;
namespace Game
{
public class Session
{
private static Session instance;
private Hashtable context;
private Session ()
{
}
[MethodImpl(MethodImplOptions.Synchronized)]
public static Session GetInstance() {
if(Session.instance == null) {
instance = new Session();
}
return instance;
}
public void Clean() {
this.context = null;
}
public Hashtable Context {
get {
return this.context;
}
set{
this.context = value;
}
}
}
}
Usage:
Before calling Application.LoadLevel() you put your hashtable into the "Session".
Example:
Code:
void OnGUI () {
if(GUI.Button(buttonRect, "Play!")) {
Hashtable ht = new Hashtable();
ht.Add("1","Unity");
ht.Add("2","Rocks");
Game.Session.GetInstance().Context = ht;
Application.LoadLevel(1);
}
}
then in the Start() method of the new scene use:
Code:
void Start () {
Hashtable table = Game.Session.GetInstance().Context;
//Iterate through the values
foreach(string test in table.Values) {
print(test);
}
//Or use them by the ID
print(table["1"]);
print(table["2"]);
}
I hope it helps,
Daniel
You can use Object.DontDestroyOnLoad to stop an object from being destroyed after the new level begins. You can find the object in the new scene and it will still have all data intact.
方法二:
The "Session" Class":
Code:
using System;
using System.Runtime.CompilerServices;
using System.Collections;
namespace Game
{
public class Session
{
private static Session instance;
private Hashtable context;
private Session ()
{
}
[MethodImpl(MethodImplOptions.Synchronized)]
public static Session GetInstance() {
if(Session.instance == null) {
instance = new Session();
}
return instance;
}
public void Clean() {
this.context = null;
}
public Hashtable Context {
get {
return this.context;
}
set{
this.context = value;
}
}
}
}
Usage:
Before calling Application.LoadLevel() you put your hashtable into the "Session".
Example:
Code:
void OnGUI () {
if(GUI.Button(buttonRect, "Play!")) {
Hashtable ht = new Hashtable();
ht.Add("1","Unity");
ht.Add("2","Rocks");
Game.Session.GetInstance().Context = ht;
Application.LoadLevel(1);
}
}
then in the Start() method of the new scene use:
Code:
void Start () {
Hashtable table = Game.Session.GetInstance().Context;
//Iterate through the values
foreach(string test in table.Values) {
print(test);
}
//Or use them by the ID
print(table["1"]);
print(table["2"]);
}
I hope it helps,
Daniel