Unity C#在场景之间传递数据

时间:2017-08-15 04:56:30

标签: c# unity3d scene saving-data

我目前正在为我的游戏开发一个应用内购买商店,该商店位于不同的场景中。我遇到的麻烦就是当我点击一个按钮例如白皮肤这样的新皮肤时,在那个场景中它将保存“didwhiteskin”的bool变为真的数据,尽管当我加载gamescene时它不会保存这些数据因此不要在if语句中运行什么。谢谢你的帮助,如果需要,我会回答任何问题。

附加信息:在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;
    }
}

1 个答案:

答案 0 :(得分:2)

您可以为所有场景定义全局变量,如下所示:

public static int didwhiteskin = 0;

因此,您可以在游戏的第一个场景中声明并初始化此变量,然后在您可能创建的任何其他场景中引用它。