Unity C#在场景之间传递数据[重复]

Posted

技术标签:

【中文标题】Unity C#在场景之间传递数据[重复]【英文标题】:Unity C# Passing Data Between Scenes [duplicate] 【发布时间】:2017-08-15 04:56:30 【问题描述】:

我目前正在为我的游戏开发一个应用内购买商店,该商店位于不同的场景中。我遇到的问题是,当我单击一个按钮时,例如针对白皮肤之类的新皮肤,在那个场景中,它会保存“didwhiteskin”的布尔值变为真的数据,尽管当我加载游戏场景时它不会保存这些数据因此不要在 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】:

您可以像这样为所有场景定义一个全局变量:

public static int didwhiteskin = 0;

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

【讨论】:

如何使该变量与 if 语句一起使用? 想通了谢谢!

以上是关于Unity C#在场景之间传递数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Winforms C#在表单之间传递变量[重复]

在C#中怎样在两个Form之间传递数据(Winfrom)?

在C#中怎样在两个Form之间传递数据(Winfrom)?

SpriteKit:在场景之间传递数据

如何使用“Fetch API”在 javascript 和 c# 之间传递数据?

使用 C# 在表单之间传递数据的最佳方式