首先我想说,我知道使用static
是使用全局变量的默认方法。但是,它对我不起作用。
我有这个(非常简单)的课程:
public class GameSettings
{
public static Boss chosenBoss;
}
我根据用户输入从另一个类设置,例如:
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
。
我在研究并发现这篇文章之后也试过了Singletons
:Singletons
但不幸的是,这些对我来说也不起作用。我担心我错过了一些非常简单的事情。谁能指出我出错的地方?
感谢。
答案 0 :(得分:1)
您正在尝试引用GameSettings
,就像它是静态类一样。即..
boss = GameSettings.chosenBoss;
和
GameSettings.chosenBoss = mort;
首先你需要实例化那个类才能使用它,因为你不使用静态类或单例...(这让我有点困惑,因为我不确定你为什么会这样做需要多个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");
}
}
}