[英]How does one refer to the game1 class's variables in XNA
我嘗試通過創建具有其定義Game1 gameObject;
的Game1類的對象來引用Game1類中的數組Game1 gameObject;
,其聲明gameObject = new Game1();
在構造函數中及其用法gameObject.tileArray[xInt, yInt].treed = true;
。
除了某些方法和變量之外,game1類本身在其類代碼中保持不變。 當我嘗試在TreeRegion類中使用此代碼時,它給我“對象引用未設置為對象的實例”,使我相信game1類某種程度上為null。
為了引用game1的變量,如何改變類或對象? 請注意,我是自學成才的,對C#還是很陌生。
引用game1的類: http ://pastebin.com/0chEcKfq Game1本身http://pastebin.com/zLDVzCca
當我嘗試在TreeRegion類中使用此代碼時,它給我“對象引用未設置為對象的實例”,使我相信game1類某種程度上為null。
不必要。 看你的表情:
gameObject.tileArray[xInt, yInt].treed = true;
如果以下任何一個為真,則將拋出NullReferenceException
:
gameObject
為null(不太可能,鑒於您顯示的代碼) gameObject.tileArray
為null gameObject.tileArray[xInt, yInt]
為空 您尚未向我們展示Game1
類-這里的問題很可能是第二個或第三個項目符號。
您可能應該考慮這是否實際上應該是Game1
API的一部分,而不是像下面這樣挖掘級別:
game1.MakeTree(xInt, yInt);
...或其他更好的名字。 當然,您似乎在這里缺少一些封裝。
(就我個人而言,我不建議通過XNA之類的東西來學習C#。我認為,盡管您仍處於學習語言和核心庫的階段,但在控制台應用程序之類的簡單環境中工作是一個更好的主意。我意識到他們可能看起來很無聊,但從長遠來看,前期的一些基礎工作可能會帶來很大的不同。)
編輯:現在我們可以看到Game1
(可以使用新名稱-您應該嘗試遵循.NET命名約定 )我強烈懷疑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
元件(即10000出數組中一種千萬元素)。
Visual Studio內置了一個很棒的調試器。
盡管我無法說出Game1代碼,但我會假設您正在訪問的數組為null。
需要在GameObject構造函數中實例化gameObject.tileArray
所以
Game1()
{
tileArray = new Tile[]();
}
假設Tile是數組中的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.