EADever Ответов: 1

Как решить ошибку ССЫЛКА на объект не установлена на экземпляр объекта.


У меня есть проблема с
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);
в абстрактном классе существ эта ошибка исчезла. но я не знаю, это нормально или просто плохое решение?

1 Ответов

Рейтинг:
1

Mehdi Gholam

Object reference not set to an instance of an object.

Значит, что-то есть null отладьте свое приложение, наведите курсор мыши на оскорбительную строку и следите за значениями во всплывающей подсказке. nulls и работайте оттуда в обратном направлении.