Unity 備忘録テクニック(Unity エディタのメニュー 4)




皆さんこんにちは、プロクラスの野間です。

今回は Unity Editor メニューカスタマイズとは少し異なりますが、Script で 3D のモデルを作ってみたいと思います。

■3Dモデルの作成

それでは早速ウサギさんを作ってみたいと・・・
は流石に無理がありますが、まずは何といっても基本!メニューから作れる 3D モデル
箱や球を作ってみたいと思います。

そもそも・・・
Unityで作れる 3D オブジェクトを先に確認しましょう。
作り方は上部メニューから
GameObject > 3D Object > Cube

000001

これで箱が作成されます。

球の場合は
GameObject > 3D Object > Sphere

003002

です。

さて、Script から Sprite の作成の回で説明しましたが、Inspector の Component を同じにすれば同じものが出来上がります。(もちろん値も含めて全部同じである必要があります)
ですので今回も今作成した GameObject の Inspector を見て同じものを Add Component すれば同じものが作成できると言いたいところですが、今回はそのままではできません。
実は 3D モデルの形状は Component の中の情報となっており、それも複製する必要があるのですが、それは Add Component では作成されません。
それもそのはず、Add Component は複製するものではなく規定のものを作成するもので、モデルデータは設定されていません。
となるとモデルデータはどこかから持ってくる必要があります。
「じゃぁそれもメニューから作成した Sphere から持ってくれば・・・」となると最初にひとつはモデルを作成しておく必要があります。
もしくはモデルデータを取り出してプログラムで復元して・・・
は、やる必要がありません。
大丈夫、ちゃんと Script でも作成できるように用意されています。

■Scriptから作成

Script で作成する場合の基本は Sprite でやったように、同じ Component を追加して設定項目を合わせる方法です。3D のモデルも例外ではないのですが、今回の問題は Component ではなくモデルデータです。
時々、Unity では基本通りではない作り方をします(笑

既存のモデルデータ作成は
GameObject.CreatePrimitive(形状の種類);
で作成されます。
GameObject から作成されている事からもわかる通り、問題点はモデルデータと説明しましたが、作成は一気に GameObject まで作られます。

「形状の種類」も定数が用意されています。
PrimitiveType.Sphere
PrimitiveType.Capsule
PrimitiveType.Cylinder
PrimitiveType.Cube
PrimitiveType.Plane
PrimitiveType.Quad

箱を作成する場合は
GameObject.CreatePrimitive(PrimitiveType.Cube);

球を作成する場合は
GameObject.CreatePrimitive(PrimitiveType.Sphere);

これでポンとモデルが作成されます。
気前が良いですねぇ。