我正在努力解决这个问题很长一段时间了: 我有这个静态类:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace Platformer;
{
public static class VarBoard
{
public static GameObject Player;
public static GameObject LevelGenerator;
public static GameObject PlayerHealthBar;
public static List <GameObject> AllEnemies = new List<GameObject> ();
public static List <GameObject> AllFriends = new List<GameObject> ();
}
}
此类存储所有全局变量,因此我可以在项目的各个位置使用它们,如下所示:
using UnityEngine;
using System.Collections;
using Platformer;
public class HealthBar : MonoBehaviour
{
void Update{
this.GetComponent<RectTransform> ().sizeDelta = new Vector2 (VarBoard.Player.GetComponent<Character> ().health, 40);
}
}
我在this教程中找到了这个结构,对我来说这似乎是一个合理的解决方案,但是当我运行代码时我就得到了这个
异常:NullReferenceException:对象引用未设置为对象的实例
但据我所知,静态类的目的不是你不需要它的实例吗? 或者我在这里遗漏了什么?
答案 0 :(得分:1)
您需要通过其构造函数初始化静态类对象(单例)。
public static class GameItemService
{
// We don't have a database, just a singleton
public static List<GameItem> LIST_OF_GAME_ITEMS; // A singleton for add/retrieve data
static GameItemService()
{
LIST_OF_GAME_ITEMS= new List<GameItem>();
// Add to the list here
}
然后你可以使用单身人士,例如
var items = GameItemService.LIST_OF_GAME_ITEMS.Take(20);
或类似。
这有帮助吗?
答案 1 :(得分:0)