2017-05-25 75 views
0

我目前正在構建遊戲教程。點擊時切換案例; C#,Unity

我想通過使用switch語句在預寫的文本中循環。 switch語句由一個計數器控制,當你點擊「下一步」按鈕時該計數器遞增。交換機的代碼如下:

public void tutMGR(){ 
    switch (nextCount) { 

    case 0: 
     tutText.text = "1"; 
     break; 

    case 1: 
     tutText.text = "2"; 
     break; 

    default: 
     break; 
    } 

按鈕的代碼是:

public void nextCnt(){ 
     nextCount++; 
    } 

在檢查中,nextCount正在增加。如果我在運行遊戲之前更改了檢查器中的值,case語句將顯示所需的文本。遊戲運行時我無法改變它。

有什麼建議嗎?

+0

你能澄清你正在使用的屏幕類嗎? Winforms或WPF?什麼類型的對象是tutText,你的屏幕結構是什麼樣的? – markshancock

+0

tutText是一個公共文本對象。 我不知道如果我使用這些屏幕類之一。 我在層次結構中創建了一個文本框對象Tutorial Tutorial。 我將該對象分配給我的遊戲管理員的tutText。 這個想法是,該文本框中的文本將根據switch語句進行更改。 –

回答

1

這可能是文本正在改變;但是,該對象不知道它已經改變;所以,它不會重新繪製屏幕。

調用'tutText.Update()'可以解決您的問題。

要考慮的另一件事是使用Dictionary而不是switch語句來進行這種簡單的翻譯。 例如爲int轉換爲西班牙文本,你可以:

Dictionary<int,string> spaNums = new Dictionary<int,string>() 
{ 
    {1,"uno"}, 
    {2,"dos"}, 
    {3,"tres"}, 
} 

tutText.text = spaNums[nextCount]; 

現在,當你想添加一個新的映射,你只需添加一個新條目解釋並且無需更改代碼。

請注意,如果你想要做的是連勝文的翻譯,你可以使用

tutText.text = nextCount.ToString(); 

由於ToString()適用於所有對象的C#

+0

更好的主意,使用數組。數組已經是整數鍵。 – Draco18s

+0

一個數組也可以工作;但它需要每個數字都有一對一的映射。我不確定這是否是他的意圖。此外,我想展示一個更通用的方法,其中密鑰不一定是整數。 – markshancock

+0

他的按鈕增加了一個計數器變量,所以他的意圖可能是連續的。 – Draco18s

1

我最終將其固定內!我所要做的就是把在按鈕功能本身的switch語句,所以它結束了看起來像這樣:

public void nextCnt(){ 
    nextCount++; 

    switch (nextCount) { 

    case 1: 
     tutText.text = "1"; 
     break; 

    case 2: 
     tutText.text = "2"; 
     miniMap.gameObject.SetActive (true); 
     break; 

    default: 
     break; 
    } 
} 

好像它的工作至今。不過謝謝您的幫助。

+0

請注意,字典可能比switch語句更乾淨。如果你想了解更多信息,請告訴我,我將添加信息作爲答案,以便我可以使用格式(包括註釋中的代碼真的不起作用)。 – markshancock

+0

是的,我很樂意閱讀您的輸入! –