前提・実現したいこと
複数のInstantiateしたオブジェクトにアタッチされているScriptを1回のGetComponentで取り出したいです。
オブジェクトは全て同じPrefabから、スクリプトは全て同じスクリプトになっています。
試したこと
Instantiateする前に読み取りたいスクリプト型の変数を宣言し、Prefabに入っているスクリプトを代入しました。
その後Instantiateした後に、先ほど宣言した変数を使いGetComponentを使わずアクセスしようとしたらエラーが起き出来ませんでした。
エラーの内容を調べると取り出そうとしている物が無い事を示すエラーでしたが
その後GetComponentすると普通にアクセス出来たので、余計に訳が分かりません。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class getComponent : MonoBehaviour 6{ 7 private GameObject prefab; 8 private Test test; 9 10 private void Awake() 11 { 12 prefab = GameObject.Find("prefab"); 13 test = prefab.GetComponent<Test>(); 14 } 15 16 private void Start() 17 { 18 for(int i = 0 ; i < 5; i++) 19 { 20 GameObject obj = Instantiate(prefab); 21 obj.test.num = i; 22 // エラー CS1061 'GameObject' に 'test' の定義が含まれておらず 23 // 型 'GameObject' の最初の引数を受け付けるアクセス可能な拡張メソッド 'test' が見つかりませんでした。 24 // using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。 25 26 // ↓はちゃんと通る 27 //obj.GetComponent<HogeTest>().HogePrint(); 28 } 29 } 30}
発生している問題・エラーメッセージ
// エラー CS1061 'GameObject' に 'test' の定義が含まれておらず // 型 'GameObject' の最初の引数を受け付けるアクセス可能な拡張メソッド 'test' が見つかりませんでした。 // using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/14 04:32