2017-05-25 9 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 Textを作成しました。 私はそのオブジェクトをゲームマネージャーのtutTextに割り当てました。 そのテキストボックスのテキストがswitch文に基づいて変更されるという考えがあります。 –

答えて

1

テキストが変更されている可能性があります。オブジェクトは変更されたことを知らない。したがって、画面を再描画しません。

'tutText.Update()'を呼び出すと、問題が解決する可能性があります。

このような簡単な翻訳のswitch文ではなく、Dictionaryを使用することも考慮する必要があります。スペイン語のテキストにint型を翻訳するたとえば 、あなたは可能性があり:今すぐ

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

tutText.text = spaNums[nextCount]; 

あなたはあなただけの辞書や不要コード変更に新しいエントリを追加し、新しいマッピングを追加します。あなたがしたい場合は、すべてあなたがToString()として

tutText.text = nextCount.ToString(); 

を使用することができますストレートテキスト翻訳であることを

注意は、私はそれを固定してしまったC#

+0

より良いアイデアは、配列を使用してください。配列はすでに整数型キーです。 – Draco18s

+0

配列も機能します。すべての数の1対1のマッピングが必要です。それが彼の意図かどうかはわかりませんでした。また、キーが整数である必要はないという、より一般的なアプローチを示したかったのです。 – 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

ええ、あなたの意見を読んでみたい! –

関連する問題