全局项目变量

Global project variable

首先让我说我知道使用 static 是使用全局变量的默认方法。但是,它对我不起作用。

我知道了(很简单)Class:

public class GameSettings
{
    public static Boss chosenBoss;
}

我从另一个 class 设置的,具体取决于用户输入,例如:

using UnityEngine;
using System.Collections;

public class ChooseMort : MonoBehaviour
{
    public Boss mort;

    // Use this for initialization
    void Start ()
    {
    }

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

    void OnMouseOver(){
        if(Input.GetMouseButtonDown(0)){
            GameSettings.chosenBoss = mort;
            Application.LoadLevel("MainGame");
        }
    }
}

一旦主场景开始,我就会尝试访问这个变量,如下所示:

// Use this for initialization
void Start ()
{
    boss = GameSettings.chosenBoss;
    PositionBoss ();
    ...
}

然而,每当我到达 boss = GameSettings.chosenBoss - 它总是 null

在研究并偶然发现这个 post 之后,我也尝试过 SingletonsSingletons

但不幸的是,这些对我也不起作用。我担心我错过了一些非常简单的东西。谁能指出我哪里出错了?

谢谢。

您正试图将 GameSettings 当作静态 class 来引用。即..

boss = GameSettings.chosenBoss;

GameSettings.chosenBoss = mort;

首先你需要实例化 class 才能使用它,因为你没有使用静态 class 或单例..(这让我有点困惑,因为我不是确定为什么您需要多个 GameSettings..)

无论如何,

public class ChooseMort : MonoBehaviour
{
    public Boss mort;
    private GameSettings gameSettings;
    // Use this for initialization
    void Start ()
    {
        gameSettings = new GameSettings();
    }

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

    void OnMouseOver(){
        if(Input.GetMouseButtonDown(0)){
            gameSettings.chosenBoss = mort;
            Application.LoadLevel("MainGame");
        }
    }
}