2016-06-23 7 views
0

別のスクリプトから値を取得する必要があるUIテキスト要素(キャンバス内)があります。他のスクリプトから変数を表示するUNITY3DエラーC#

私が今やっている(そしてそれは、私はそれが動作し得るようになった最も近かった)方法がある:

public class AttributeValueController : MonoBehaviour { 

//public AttributeName attribute; 
[SerializeField] 
private Text attributeValue = null; 

// Use this for initialization 
void Start() { 
    attributeValue.text = CharacterGenerator._toon.GetPrimaryAttribute("Might").AdjustedBaseValue.ToString(); 
} 

私は私が変更したいテキストコンポーネントは、インスペクタ上で設定されました「attributeValue」私はこれを実行すると

は私が取得エラー

資産/スクリプト/ HUDクラス/ AttributeValueController.cs(19,58):エラーCS0120:オブジェクト参照が非静的メンバにアクセスするのに必要な `CharacterGenerator ._toon」

とNullReferenceException:オブジェクト参照オブジェクト UnityEngine.UI.Graphic.OnRebのインスタンスに設定されていませんuildRequested()(C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Graphic.cs:480) UnityEngine.UI.GraphicRebuildTracker.OnRebuildRequested()(C:/ buildslave/unity (/ buildslave/unity/build/artifacts/generated/common/modules/UI/C /ライブラリ) CanvasRendererBindings.gen.cs:314)

誰でも手助けできます。この関数を "0"で置き換えるとどこでも検索されましたが、修正できません

+0

何らかの理由で "[SerializeField]"を使用しないでください。それを削除してください! – Fattie

+1

;あなたが問題のコンポーネントの両方の両方の*** ALL ***を含まない限り、あなたを助けることは絶対に不可能です。トップラインを含むすべてのクラスなど。 – Fattie

答えて

-1

は静的クラスではないため、そのようにアクセスすることはできません。プロパティにアクセスするには、クラスのインスタンスを作成する必要があります。

CharacterGenerator cGen = new CharacterGenerator(); 
attributeValue.text = cGen._toon.GetPrimaryAttribute("Might").AdjustedBaseValue.ToString(); 

これはクラスの新しいインスタンスで与えられた、が、私はこれらのプロパティを移入するが、彼らがされるように、おそらくあなたのクラスが構成されて期待していません。

+0

「静的でないメンバーにアクセスするにはオブジェクト参照が必要です」というメッセージが表示された場合、それは異なると確信していますが、あなたはOPを読んでいますか? – pay

+0

とにかく、Unityかどうか、ルールはまだ適用されます。彼は静的でないものにアクセスしようとしています。あなたはC#でそれを行うことはできません。 – pay

+0

また、@JoeBlow、 'CharacterGenerator'はUnityのあらかじめ定義されたクラスではありません...あなたがここで何を話しているのか分かりません。あなたが言ったことを誤解を招くように修正したいかもしれません。 – pay

関連する問題