Когда я пытаюсь использовать этот код в классе TreeRegion, он дает мне «Ссылка на объект не установлена на экземпляр объекта», что наводит меня на мысль, что класс game1 каким-то образом равен нулю.
Не обязательно. Посмотрите на ваше выражение:
gameObject.tileArray[xInt, yInt].treed = true;
Это выдаст NullReferenceException
, если любой из этих истинных:
gameObject
равно нулю (маловероятно, учитывая код, который вы показали)
gameObject.tileArray
равно нулю
gameObject.tileArray[xInt, yInt]
равно нулю
Вы не показали нам класс Game1
- вполне вероятно, что проблема заключается во второй или третьей пуле.
Вы, вероятно, должны подумать, действительно ли это должно быть частью Game1
API, а не копать уровень ниже так:
game1.MakeTree(xInt, yInt);
... или как там может быть лучшее имя. Похоже, вам здесь не хватает инкапсуляции.
(Лично я бы не советовал изучать C # с помощью чего-то вроде XNA. Я думаю, что пока вы еще находитесь на этапе изучения языка и основных библиотек, лучше работать в простой среде, такой как консольные приложения. Я понимаю, что они могут показаться скучными, но предварительная работа может сильно измениться в долгосрочной перспективе.)
РЕДАКТИРОВАТЬ: Теперь мы можем увидеть Game1
(что может быть с новым именем - и вы должны попытаться следовать .NET именования ) Я сильно подозреваю, что createTiles
вызывает проблему , Совершенно не очевидно, что это на самом деле заполнит каждый элемент tileArray
- тем более, что вы даже никогда не используете a
или b
. Я предполагаю, что gameObject.tileArray[xInt, yInt]
возвращает null
в вашем TreeRegion
коде.
РЕДАКТИРОВАТЬ: Глядя на то, как вы создаете массив, это еще более важно:
gridWidth = 100; gridHeight = 100;
gridScope = gridWidth * gridHeight;
tileArray = new Tile[gridScope, gridScope];
Вы действительно хотели массив 10000x10000? Вы уверены, что вам нужно это gridScope
? Я бы ожидал:
tileArray = new Tile[gridWidth, gridHeight];
Обратите внимание, что в createTiles
вы заполняете только максимум gridHeight * gridWidth
элементов (т. Е. Десять тысяч из десяти миллионов элементов в массив).