[過去ログ] 【3Dゲームエンジン】Unity質問スレッド29 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
90
(1): 名前は開発中のものです。 [sage] 2017/05/26(金) 17:10:47.06 ID:7jTUf7Xw(1) AAS
>>89
89(1): 名前は開発中のものです。 [] 2017/05/26(金) 16:54:28.58 ID:nZys6g5+(1/2) AAS
本を読んでわからないコードが出てきたので質問させてください
Sceneに、ObjectState.csというスクリプトをアタッチしたCubeを3つ
何もアタッチしてないCapsuleが1つあります

GameObject[] goArray = (GameObject[])
GameObject.FindObjectsOfType (typeof(GameObject));
foreach (GameObject go in goArray) {
ObjectState z = go.GetComponent<ObjectState> ();
if (z == null || z == this) { 
continue; 
}
//処理
}

まず1行目なんですが、GameObject[]型へのキャストの型を、GameObject型にするとエラーになるのはなんででしょうか。
error CS0030: Cannot convert type `UnityEngine.Object[]' to `UnityEngine.GameObject'
GameObject[]にGameObjectを代入が制限されるケースってあるんですか?
それと、4行目のコードでgoArrayの要素にObjectStateコンポーネントがアタッチされてるか調べてると書いてあったんですけど、
これはgoにObjectStateコンポーネントを追加して代入してるふうにしか読めません。
しかしplayボタンを押すと、CapsuleにObjectStateコンポーネントは追加されずに本に書いてあるコード通りに動きます。
どなたか回答お願いします。
>GameObject[]型へのキャストの型を、GameObject型にするとエラーになるのはなんででしょうか。

ポインターとポインターのポインターでは型が異なるのは当然。
なぜ型が異なるのか? という所まで知りたければ、もっと専門的な書籍を当たる方がいい。

>代入してるふうにしか読めません。

存在しないTypeをGetComponentで指定するとnullが返るので、
nullがzに代入されたかどうかで存在の有無が把握できる。
1-
あと 912 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.010s