- Unity 7ウニ目
658 :名前は開発中のものです。[sage]:2012/02/16(木) 17:25:02.82 ID:XEW+dTa2 - 例えば、クラス内にpublicな変数(GameObject)を用意したら、GUI上のプロパティでもGameObjectをセットできるけど、
下のような記述でScript内でもセットすることができると思います (この場合はHierarchy上にPrefabがない状態を想定) public GameObject Button_UP; void Start () { Button_UP=(GameObject)Instantiate(Resources.Load("Button_UP")); Instantiate(Button_UP,transform.position,transform.rotation); } 今、「Quad UI」のScriptを参考に見ているんですが、 「public GameObject Button_UP;」の代わりに「public Button2D Button_UP;」という変数がありました 「Button2D」は「Quad UI」で用意されたScript(クラス?)を示していて、この場合はGUI上のプロパティでは、「Button2D」のScript(コンポーネント?)を持ったGameObjectだけをセットできると理解しています このようなScript(コンポーネント?)を持ったGameObjectだけをセットできるケースでも、GUI上ではなくScript上でセットしたいのですが、下記の記述で、問題なく起動できる場合と後述のエラーが出る場合があります @一般的に以下の記述でScript(コンポーネント?)を持ったGameObjectのセットはできているものか、A下記のエラーをご存じの方はいないか 分かる方がいたら教えて下さい 記述 void Start () { Button_UP=(Button2D)Instantiate(Resources.Load("Button_UP")); Instantiate(Button_UP,transform.position,transform.rotation); } エラー ArgumentException: The thing you want to instantiate is null. UnityEngine.Object.CheckNullArgument (System.Object arg, System.String message) ※エラーが出るケースはStart()ではなく、参考にしてる人がawakeの代わりに用意したというInit()というメソッドで書いています Init()を使うのであれば、大人しくGUI上でセットすればいいのですが、エラーの原因をできれば把握したいです
|
- Unity 7ウニ目
668 :名前は開発中のものです。[sage]:2012/02/16(木) 18:47:31.56 ID:XEW+dTa2 - >>665
ありがとうございます 基本的にScript名をキャストして渡して良いものと覚えるようにします そして、説明不足ですみません 2番目のソースは以下の通り書いています GameObjectとした時は当然叱られて、起動すらできません ↓のソースの場合、起動は可能ですが、先述のエラーが出るのです public Button2D Button_UP; void Start () { Button_UP=(Button2D)Instantiate(Resources.Load("Button_UP")); Instantiate(Button_UP,transform.position,transform.rotation); }
|
- Unity 7ウニ目
673 :名前は開発中のものです。[sage]:2012/02/16(木) 19:38:24.48 ID:XEW+dTa2 - もちろん自分でも調べとるよ(´;ω;`)
生成してるのにnullになる理由がわからぬ 時間取らせてすまんかった
|
- Unity 7ウニ目
677 :名前は開発中のものです。[sage]:2012/02/16(木) 20:12:55.83 ID:XEW+dTa2 - >>675
ありがとうございます 下記の式で起動後のエラーが消えました! Button_UP2=((GameObject)Instantiate(Resources.Load("Button_UP"))).GetComponent<Button2D>();
|