當我嘗試在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