Как решить ошибку ССЫЛКА на объект не установлена на экземпляр объекта.
У меня есть проблема с
Object reference not set to an instance of an object.
я использую новое ключевое слово для базового абстрактного класса, но безуспешно. Мне нужна помощь xD
Что я уже пробовал:
Базовый абстрактный класс с новым Статлистом:
public abstract class Creature : VisibleObject { public StatsList StatsList; private int state = (int)CreatureState.ACTIVE; public Creature(int objId, SpawnTemplate spawnTemplate, VisibleObjectTemplate objectTemplate, Vector5D Position) : base(objId, spawnTemplate, objectTemplate, Position) { StatsList = new StatsList(this);// } }
А класс игрока расширяет класс существа:
public class Player : Creature, IDisposable { public TemplateCharacter Template; public Player(TemplateCharacter template) : base(template.ID, null, null, template.Position) { Template = template; StatsList = new StatsList(this); } }
Теперь ошибка отсюда:
float[] stats = CharacterBaseStats.Статистика [(int)c.шаблон.Класс];//
Object reference not set to an instance of an object.
public class StatsList : Dictionary<Stat, float> { Creature obj; Dictionary<Stat, float> InitialStats = new Dictionary<Stat, float>(); int Health; int Mana; ushort DivinePoints; ushort FlyPoints; public StatsList(Creature obj) { this.obj = obj; InitializeStats(); } public void InitializeStats() { if (obj is Player) { Player c = obj as Player; float[] stats = CharacterBaseStats.Stats[(int)c.Template.Class];// Error here InitializeStat(Stat.MaxHp, 10000); } else { // GameObjects InitializeStat(Stat.Speed, 6); InitializeStat(Stat.FlySpeed, 9); } } }
Когда я пытаюсь удалить
StatsList = new StatsList(this);в абстрактном классе существ эта ошибка исчезла. но я не знаю, это нормально или просто плохое решение?