当我尝试在TreeRegion类它给了我使用此代码“对象引用不设置到对象的实例, “让我相信game1类在某种程度上是空的。
没必要。看看你的表情:
gameObject.tileArray[xInt, yInt].treed = true;
这将引发NullReferenceException
如果其中任何为真:
gameObject
为空(不可能的,因为还有你的代码)
gameObject.tileArray
为空
gameObject.tileArray[xInt, yInt]
为空
您还没有向我们展示Game1
类 - 看起来第二个或第三个子弹很可能是这里的问题。
你或许应该考虑是否这实际上应该是Game1
API的一部分,而不是向下挖这样的水平:
game1.MakeTree(xInt, yInt);
...或任何更好的名字可能。它看起来像你在这里错过了一些封装。我个人并不推荐通过类似XNA的方式学习C#,我认为当你还处于学习语言和核心库的阶段时,最好在一个简单的环境中工作,比如控制台。应用我意识到,他们可能看起来枯燥,但有点基础的的前期可能使从长远来看,一个巨大的不同)
编辑:现在我们可以看到Game1
(可以用新的名称做 - 你。应该尝试遵循.NET naming conventions)我强烈怀疑createTiles
正在导致此问题。 实际上是填充tileArray
的每个元素 - 特别是因为您甚至从未使用过a
或b
。我的猜测是gameObject.tileArray[xInt, yInt]
在您的TreeRegion
代码中返回null
。
编辑:看你如何创建阵列,它更涉及:
gridWidth = 100; gridHeight = 100;
gridScope = gridWidth * gridHeight;
tileArray = new Tile[gridScope, gridScope];
你真的想10000x10000阵列?你确定你需要这个gridScope
?我本来期望:
tileArray = new Tile[gridWidth, gridHeight];
注意,在createTiles
你只填充最多gridHeight * gridWidth
元(即10 出数组中的十个亿元素)。
香港专业教育学院去,并添加它 – 2012-03-28 05:19:43
这的确是空数组,因为我仍然可以ascess在 – 2012-03-28 05:21:50
阵列声明和定义,它是在createTiles使用方法 – 2012-03-28 05:24:41