Unity C# 在场景之间传递数据
Unity C# Passing Data Between Scenes
我目前正在为我的游戏开发一个应用内购买商店,它位于不同的场景中。我遇到的问题是当我点击一个按钮,例如一个新的皮肤,比如白皮肤,在那个场景中它会保存 "didwhiteskin" 的 bool 变为 true 的数据,尽管当我加载游戏场景时它不会保存这个因此,数据不是 运行 如果 statement.Thank 里面有什么,请大家帮忙,如果需要,我会回答任何问题。
附加信息:在 StoreView 上单击按钮时调用函数 ChoseWhiteSkin()。
这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class StoreScript : MonoBehaviour {
bool didwhiteskin = false;
public static StoreScript Instance {
get;
set;
}
void Awake () {
DontDestroyOnLoad (transform.gameObject);
Instance = this;
}
// Use this for initialization
void Start () {
Scene currentScene = SceneManager.GetActiveScene ();
string sceneName = currentScene.name;
if (sceneName == "GameScene") {
if (didwhiteskin) {
Debug.Log ("this ran");
//This where I will put function to change skin but the issue is the if statement never being ran
}
}
else if (sceneName == "StoreView") {
}
}
// Update is called once per frame
void Update () {
}
public void ChoseWhiteSkin() {
PlayerPrefs.Save();
didwhiteskin = true;
}
}
你可以像这样为所有场景定义一个全局变量:
public static int didwhiteskin = 0;
因此您可以在游戏的第一个场景中声明并初始化此变量,然后在您可能创建的任何其他场景中引用它。
我目前正在为我的游戏开发一个应用内购买商店,它位于不同的场景中。我遇到的问题是当我点击一个按钮,例如一个新的皮肤,比如白皮肤,在那个场景中它会保存 "didwhiteskin" 的 bool 变为 true 的数据,尽管当我加载游戏场景时它不会保存这个因此,数据不是 运行 如果 statement.Thank 里面有什么,请大家帮忙,如果需要,我会回答任何问题。
附加信息:在 StoreView 上单击按钮时调用函数 ChoseWhiteSkin()。
这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class StoreScript : MonoBehaviour {
bool didwhiteskin = false;
public static StoreScript Instance {
get;
set;
}
void Awake () {
DontDestroyOnLoad (transform.gameObject);
Instance = this;
}
// Use this for initialization
void Start () {
Scene currentScene = SceneManager.GetActiveScene ();
string sceneName = currentScene.name;
if (sceneName == "GameScene") {
if (didwhiteskin) {
Debug.Log ("this ran");
//This where I will put function to change skin but the issue is the if statement never being ran
}
}
else if (sceneName == "StoreView") {
}
}
// Update is called once per frame
void Update () {
}
public void ChoseWhiteSkin() {
PlayerPrefs.Save();
didwhiteskin = true;
}
}
你可以像这样为所有场景定义一个全局变量:
public static int didwhiteskin = 0;
因此您可以在游戏的第一个场景中声明并初始化此变量,然后在您可能创建的任何其他场景中引用它。