我不理解如何在將代碼放入類定義時將對象添加到列表中。我正在使用C#。將對象添加到子類中的列表(C#)
我正在做一個平臺遊戲,並設置了一些東西,這樣遊戲中的每個對象,無論是玩家角色,敵人,移動平臺還是固定對象,都會繼承我的「StaticObject 「類(它本身繼承了」Sprite「類),根據它們的特定功能構建它。我想將所有對象(不管它們的類型)添加到列表中以幫助我檢查碰撞。
例如,繼承的一個序列是:精靈> StaticObject> MovingObject>字符> PlayerCharacter
我創建了一個「的GameInfo」級(和由靜態實例,使得它的屬性可以從任何地方在被訪問遊戲),並定義我的「gameObjects」名單中有:
class GameInfo
{
public static GameInfo gameInfo { get; private set; }
public List<StaticObject> gameObjects { get; set; }
public GameInfo()
{
GameInfo.gameInfo = this;
gameObjects = new List<StaticObject>();
}
}
在我的「StaticObject」類的構造函數(所有的遊戲對象繼承),我嘗試添加對象
然後正在建設中「的GameInfo列表「:
class StaticObject : Sprite
{
public StaticObject(Texture2D texture, Vector2 position, SpriteBatch spriteBatch) : base(texture, position, spriteBatch)
{
GameInfo.gameInfo.gameObjects.Add(this);
}
public override void Update(GameTime gameTime)
{
// Collision code.
base.Update(gameTime);
}
}
這不工作,我得到的錯誤:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
我不能工作究竟如何每一個對象添加到創建它們的那一刻我的「gameObjects」列表中,而無需在主遊戲代碼創建對象時明確添加每一個。我想要添加自動發生。
我在別處看到過類似的問題,但我無法找到答案。任何幫助,將不勝感激!謝謝! :)
你的類'StaticObject'你沒有創建'GameInfo'的實例,所以它沒有任何東西可以添加到 –
你的單例實現看起來有問題。 –
而不是'GameInfo.gameInfo = this;'在CTOR中執行'public static GameInfo gameInfo {get;私人設置; } = new GameInfo();' – Fildor