全局项目变量
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 之后,我也尝试过 Singletons
:Singletons
但不幸的是,这些对我也不起作用。我担心我错过了一些非常简单的东西。谁能指出我哪里出错了?
谢谢。
您正试图将 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");
}
}
}
首先让我说我知道使用 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 之后,我也尝试过 Singletons
:Singletons
但不幸的是,这些对我也不起作用。我担心我错过了一些非常简单的东西。谁能指出我哪里出错了?
谢谢。
您正试图将 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");
}
}
}