2017-07-03 27 views
0

オブジェクトから文字列変数を取得する必要があります。どうすればいいですか?ここで Unity GetComponent(文字列スクリプト)

は私の現在のコードです:

Canvas.GetComponent<Global_Variables>().Active_Figure.GetComponent(Script_Name).Cancel(); 

しかし、私は、コンソールに次のエラーを取得する:

資産/スクリプト/ Cell.cs(62,20):エラーCS1061:型UnityEngine.Componentはとキャンセルなし拡張メソッド「キャンセルの定義が含まれていません」「タイプのをUnityEngine.Component」

+0

「GetComponent(string)」を使用している頻度はよくわかりませんが、それは遅いです。どうしてそんなことをするのか?あなたの質問にあるコードの何が間違っていますか? – Programmer

+0

キャンセル()bcを呼び出せませんGetComponent(Script_Name)でスクリプトを取得できません –

+0

エラーが発生しますか?キャンセル()とは何ですか?私はあなたがスクリプトを投稿して、それにどのようにアクセスしたいのかと思う。 – Programmer

答えて

1

あなたはによって返された結果をキャストする必要があり。

Cancel関数は、Cancelableというクラス(またはインターフェイス)で定義され、スクリプトが継承(または実装)されていると仮定します。

Cancelable myScript = Canvas.GetComponent<Global_Variables>().Active_Figure.GetComponent(scriptName) as Cancelable; 
myScript.Cancel(); 

EDIT:

次回は、あなたのコード正しくフォーマットを投稿することを忘れないでください、そして、あなたの問題を解決する方法を助けることができる任意の追加情報を入れるために(このようなエラーとしてコンソールはあなたを与えます)

+0

いいえ、それは私には役に立たない。私はこのスクリプトをGameObjectに持っています。このスクリプトはすべてのクラスで共通でなければなりません。=/ –

+0

さて、キャンセルはどのクラスに定義されていますか? 'Script_Name myScript'の宣言を 'Name_of_the_class_implementing_Cancel myScript'で置き換えます。 – Hellium

+0

データ型を変更する必要があります。例:Pawn Script = new Pawn()Pawnを選択し、Kingを選択した場合、私はasign King Script = new King() –