質問: obj.GetComponent(); myClass.Set(new Vector3(1,1,1); ``` のように記述しても思ったように動作させることはできませんでした。 また、パラメータを設定するような方法も見つけ、同様に試してみたのですがうまくいませんでした。 プレハブで初期値を外部から与えるということはできないのでしょうか。 ご指導頂けると幸いです。 質問が始めてのため、過不足があるかも知れませんがよろしくお願いします。
回答: 丸かっこが足りないのはコピペミスでしょうか? `myClass.Set(new Vector3(1,1,1);` → `myClass.Set(new Vector3(1,1,1));` 使用しているコードの一部しか分からないので推測ですが、 `myClass.Set(new Vector3(1,1,1);`で渡したVector3型の値を`myClass`側で代入し忘れていませんか? 参考としてシンプルに、プレハブを生成して`Vector3`型の任意の値をインスタンス化した オブジェクトにSetして`Move()`で`transform.position`を変更するスクリプトを書いてみました。 こういうことではない、という場合は返信で情報を追加してください。 `PrefabManager`スクリプトをアタッチしたオブジェクトをシーンに配置し、 プリミティブなCapsuleに、`MoveObject`スクリプトをアタッチしてプレハブ化しました。 `PrefabManager`の`capsulePrefab`には上記のプレハブを設定しています。 PrefabManager ``` using UnityEngine; using System.Collections; public class PrefabManager : MonoBehaviour { public GameObject capsulePrefab; void Start() { for (int i = 0; i < 10; i++) { GameObject obj = (GameObject) Instantiate(capsulePrefab, Vector3.zero, transform.rotation); MoveObject moveObject = obj.GetComponent(); moveObject.vec = new Vector3(2f * i, 0f, 0f); moveObject.Move(); } } } ``` MoveObject ``` using UnityEngine; using System.Collections; public class MoveObject : MonoBehaviour { public Vector3 vec; public void Move(){ Debug.Log("vec : " + vec); transform.position = vec; } } ```