トップページ > ゲ製作技術 > 2012年02月16日 > XEW+dTa2

書き込み順位&時間帯一覧

16 位/149 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000011110004



使用した名前一覧書き込んだスレッド一覧
名前は開発中のものです。
Unity 7ウニ目

書き込みレス一覧

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>();


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。