簡體   English   中英

如何在XNA中引用game1類的變量

[英]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的每個元素-尤其是因為您甚至從未使用過ab 我的猜測是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM