2017-06-08 8 views
0

forループにCellとValueの値があります。たとえば、i = 0の場合、値はA0Text.textに割り当てる「最初の値」になります。 i = 1の場合、値は私がA1Text.textに割り当てる "第二の値" になります... -c#forループから個々の変数に値を代入する

for (int i = 0; i < BLOCKS.Count; i++) 
{ 
//possible values of Cell are A0, A1, A2 ... 
var Cell = currentBLOCKData["cell"]; 

var Value = currentBLOCKData["value"]; 

.... 

それから私は

//possible cellName are - A0Text, A1text, A2Text ..... 
string cellName = Cell + "Text"; 

セルと同じ名前を持つ名前付きフィールドを持っています私は割り当てたい

A0Text.text = First value in above field - Value 
A1Text.text = 2nd value in above field - Value 
A2Text.text = 3rd value in above field - Value 

どのように私は上記のアサイメントを行うことができますか?

+0

モジュロ%演算子、i%長さを使用してから、再実行値は常に境界内にあります。だからあなたは40のそのような割り当ての必要はありません –

+0

あなたはあなたの答えを詳しく述べることができますか?したがって、例えばi = 0の場合、値はA0Text.textに割り当てる最初の値になります。 i = 1の場合、値はA1Text.textに割り当てたい「第2の値」になります。 –

+0

セルを検索してその値を設定することができます。 –

答えて

0

はい - 私はそれを考え出した - 検索と以下のように割り当てる:

 txtRef = GameObject.Find(cellName).GetComponent<Text>(); 

     txtRef.text = Value.ToString(); 
1

をGameobject.Findは非常に遅くなることが、私はそれはかなり非効率的な検討したいです。あなたがそれを使用することを避けることができるところで、あなたのベストをお試しください。テキストコンポーネントのパブリック配列を作成してインスペクタで割り当て、ループ内で配列を反復処理してみましょう。

public Text[] textArray; //assign in inspector 

for(int i = 0; i < BLOCKS.Count; i++){ 
    //.. your other code here 
    textArray[i].text = Value.ToString(); 
} 
+0

ありがとうございます。各テキストラベルに割り当てることができますか?その場合、GameObject.Findよりも効率が悪いかもしれませんか?また、範囲外の配列例外を取得します。 –

+0

他の方法:各テキストラベルをスクリプトに割り当てる必要があります。あなたのコードを私に見せてもらえますか?あなたはその例外を避けるために助けが必要ですか? –

+0

私はアンドロイドでテストしたときにApplication.Datapathを使用しているので、jsonファイルを読み込むことさえできないので、私は一歩前進しなければなりませんでした。あなたはその質問を手助けできますか?https://stackoverflow.com/q/44474684/4282366。ありがとう –

関連する問題