IshidaGames【UnityC#講座】オブジェクトを縦横規則正しく並べて生成、色を変える、子オブジェクトにして検索するTweetnoteで管理人イシゲーのゲームの思い出記事を100円で公開しました。今回は以下のことをします。・オブジェクトの生成を好きな数だけ縦横規則正しく並べ、幅や高さも調節できるようにする。・生成するオブジェクトの色と透明度を変える。・生成したオブジェクトの中からひとつ検索する。・生成したオブジェクトを子オブジェクトにした上でひとつ検索する。このようなことができると広いマップの目印などを気軽に作れるので便利です。■子オブジェクトにして検索する■CubeをPrefabにして規則正しく並んで出現させるまずは空のオブジェクトを出しましょう。これを置いた位置を中心にしてPrefabのオブジェクトが出現するようにします。Empty出てきたオブジェクトの名前を右クリック、Renameで名前を「Central」に変えます。続いてCubeを出します。CubeこれはHierarchyからProjectにドラッグ&ドロップしてPrefabにしてください。Prefabとは大量生産するための型のようなものです。Hierarchyに残ったCubeは削除して構いません。次はスクリプトを書きます。Script名前は「LineUp」です。for文は決められた数だけ処理し、その回数によって処理の結果を変えることができます。このスクリプトではfor文を二重にし、縦の数だけ横のオブジェクト生成を位置を替えながらするようにしました。X軸とZ軸の位置の計算が猥雑になっていますが、Centralの位置に縦/横の幅と出現するオブジェクトの数を掛け合わして半分にしたものを足すことでCentralが中央に来るようにしています。for文の生成している回数と幅を掛け合わせたものを引くことで生成されたオブジェクトの位置を調整します。それだけだとオブジェクトの位置が幅半分ほど多いのでその分を引いてできあがり、としました。このスクリプトをCentralにアタッチし、InspectorにCubeのPrefabをドラッグ&ドロップし、それぞれの数値を設定してください。Cubeはきれいに並んで生成されているでしょうか?なお、オブジェクト自体の大きさは考慮していませんので幅がオブジェクトの大きさ以下だとこうなります。セットするオブジェクトはユニティちゃんでもできます。このユニティちゃんにアニメーションをつけるとこうなります。この作品はユニティちゃんライセンス条項の元に提供されていますスポンサーリンク■生成するオブジェクトの色を変えるさてユニティちゃんからCubeにセットし直してください。次は生成するオブジェクトの色を変えてみましょう。スクリプトに書き加えます。生成したオブジェクトのMaterialにアクセスして色を変えます。0.2f)の数字は左から赤,緑,青,透明度になっており0~1で設定します。PrefabのMaterialが最初からあるものだと透明度を変更できません。Materialを新たに設定して透明度を変えてみましょう。Material名前はTransparency(透明度)、略して「Trans」とでもしましょう。これをCubeのPrefabにドラッグ&ドロップしてください。Modeという部分が出てきます。そこがOpaqueになっているのでFadeかTransparentにすると透明度を変えられます。無事にできたでしょうか。■オブジェクトを検索してひとつだけ色を変える今度は生成したオブジェクトを検索してそれだけ色を変えてみましょう。生成したオブジェクトはみな全て同じ名前です。これだとひとつだけ検索できないのでそれぞれのオブジェクトに名前をつけ、その中から特定のものを選んで色を変えるようにします。InspectorのverNumとhorNumに番号を入れましょう。名前につけられる数字は0から始まるので、それぞれverticalとhorizontalより小さな数字を入れなくてはいけません。再生するとHierarchyに名前はこのように表示されます。ひとつだけ緑色になりました。■子オブジェクトにして検索するさて次は生成したオブジェクトをCentralの子オブジェクトにして検索、そしてまたひとつだけ色を変えてみましょう。このようにCentralの子オブジェクトになりました。先ほどと同じく色がひとつ変わっているはずですがちゃんとなったでしょうか?これで今回は終わりです。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。