2016-09-07 7 views
0

インスタンス化されたボタンのテキストを変更したい。このボタンは配列に格納されます。Unity3d UIテキスト

しかし、テキストコンポーネントにアクセスしようとすると、問題が発生します。私が間違っていることを理解することはできません。私がチェックしてきたすべての情報源は私と同じように言います。未完了の団結のdocの退屈...

はとにかく、彼はコードです:

 foreach (string el in files) 
     { 
      AccountName = System.IO.Path.GetFileName(el); 
      AccountsButtons[i] = Instantiate(Resources.Load("Account") as GameObject); 
      AccountsButtons[i].name = AccountName; 
      AccountsButtons[i].transform.SetParent(MyCanvas.transform, false); 
      AccountsButtons[i].GetComponentInChildren(Text).text = AccountName; 
     } 

最後の行、それはTextがタイプであることを私に伝え、それが指定されたコンテキストで有効ではありません(ビジュアル言いますスタジオ)。

ユニティのエディタで指定されたエラーは次のとおりです。

error CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected 

答えて

2

単にcorrect構文です

AccountsButtons[i].GetComponentInChildren<Text>().text = AccountName; 

AccountsButtons[i].GetComponentInChildren(Text).text = AccountName; 

を交換してください。このような問題がある場合は、Unityのdocumentationを見ることができ、それはあなたを助けるでしょう。

AccountsButtons[i].GetComponentInChildren(typeof(Text)).text = AccountName; 

理由:

+0

HAAA、よろしく!私は非常にjgifodgjfoids愚かな...ありがとう! – Andromelus

+0

これはちょっとした間違いです。すべての初心者は、このようなものを通過します。 – Programmer

+0

私はUNETとのインターンシップ中に3ヶ月働いていたので、少しうんざりしています(それはうまくいきます)ので、私はこの間違いを多くしています...あなたの答えを受け入れるでしょう! – Andromelus

0

は、このお試しくださいC#では

を、すべてのコンストラクタはインスタンス化する必要があります。同じように、Vector3 vec = Vector3(0,0,0)のようなことはできません。newキーワードを追加してインスタンス化する必要があります。Vector3 vec = new Vector3(0,0,0)のようになります。コードスニペットでは、インスタンス化や演算子を一切使用せずにクラスを参照しているようです。これを修正するには、typeof演算子を使用して、型をパラメーターとしてGetComponentInChildrenメソッドに渡す必要があります。