CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】オブジェクトのマテリアルを変更する方法
こんにちは!Unityで作成したオブジェクトはデフォルトのままだと見た目が少し味気ないですよね。
色を変えたくても、設定方法が分からない!となることがあるかと思います。
そんなとき、オブジェクトにセットされているマテリアルを変更することで色や質感を変更することができます。
そこで本記事では、マテリアルを変更する方法を解説していきます!
マテリアルとは
マテリアルとはオブジェクトの材質データのことです。
オブジェクトの色は、実はマテリアルに設定された色が反映されています。
マテリアルでは色だけでなく、光沢のような質感も変更することができます。
マテリアルの設定はコードから変更することもできますが
インスペクターから直接変更することができるので、初めてでも簡単に試すことができますよ!
マテリアルの変更方法
ここでは、以下のような順番でマテリアルの変更方法について解説していきます。
- マテリアルを作成する
- オブジェクトにマテリアルを適用する
- マテリアルを一括変更する方法
- マテリアルが変更できない時
それでは、一つずつ設定してきましょう!
マテリアルを作成する
まずは、マテリアルを設定するオブジェクトを作成しておきましょう。
ヒエラルキーウインドウで右クリック→3D Object→Sphereで球体を作成します。
下のようなデフォルトマテリアルが設定された球体が生成されました。
この白っぽいデフォルトマテリアルはUnityに内臓されたマテリアルであり
インスペクターから内容を編集することができません。
下のように項目が変更できないようになっています。
そこで、マテリアルを変更したい時は新しいマテリアルを作成し、設定する必要があります。
Projectビュー内で右クリック→Create→Materialを選択します。
New Materialというマテリアルが作成されました。
今回はこのマテリアルの色を変更してみましょう。
マテリアルのインスペクターを開き、Albedoから色を変更することができます。
カラーピッカーが開くので、赤色を選択しました。
オブジェクトにマテリアルを適用する
マテリアルはオブジェクトに設定することで、先ほどの設定が反映されます。
下のようにマテリアルをセットしたいオブジェクトにドラッグアンドドロップします。
オブジェクトの色が変わったのが確認できますね。
インスペクターを開いてみると、マテリアルがデフォルトマテリアルから置き換わっているのが確認できます。
セットしたマテリアルはインスペクターから変更することもできます。
MetalicとSmoothnessの数値を変更すると、オブジェクトの質感が変わっているのが分かります。
このMetalicはどれくらい「金属的か」を意味し、
Smoothnessは「表面のなめらかさ」を意味しています。
マテリアルを一括変更する方法
マテリアルを複数のオブジェクトに一括で設定することもできます。
下のように、Ctrlキーを押しながら一括変更したいオブジェクトを全て選択し
マテリアルのインスペクターのMesh Rendererにドラッグアンドドロップで一括変更することができました。
ちなみに、同じように複数選択してヒエラルキー内のゲームオブジェクトに直接ドラッグアンドドロップしようとしても、一つのオブジェクトにしかセットされないので注意です。
マテリアルが変更できない時
アセットをインポートした時などに、モデルのマテリアルが変更できない時があります。
下のようにマテリアルがドラッグアンドドロップできません。
そんな時は、オブジェクトの要素を開き、マテリアルが設定されているオブジェクトを探しましょう。
今回はDummyMeshにマテリアルが設定されていることが分かりました。
このようにマテリアルがセットされているオブジェクトなら、ドラッグアンドドロップしてマテリアルを変更することができます。
セットされているマテリアルの設定をインスペクターから編集したい時もあると思います。
そんなとき、デフォルトマテリアルのようにマテリアルの設定が暗い文字で表示され編集できないことがあります。
そんなとき、こちらの記事を参考にすると以下の手順でマテリアルが変更できるようになります。
Projectの中の3Dモデルを選択して
InspectorのMaterialsタブから
Location:Use External Materials(Legacy)を選択してApplyボタン
引用元 : Sirohood
マテリアルの変更にアニメーションをつける
ここでは、マテリアルの色をアニメーション付きで変更する方法を解説します。
まずはプロジェクトビュー内で右クリック→Create→Animationを作成しましょう。
作成されたアニメーションをオブジェクトにドラッグアンドドロップします。
新たにアニメーターも自動で作成されます。
Projectビューを右クリック→AddTab→Animationでアニメーションタブを追加しましょう。
アニメーションタブを開いた状態でオブジェクトを選択→Add property→MeshRender→
Mesh Renderer.Material_color横の+ボタンを押します。
作成されたMaterial_colorを開くと最初の状態(0フレーム)での色は下のような数値になっています。
これを60フレームのときに下のような数値になるように設定します。
これでアニメーションの設定は完了です。
実行して結果を確認してみましょう。
下のように赤色から水色に徐々に色が変わるアニメーションをつけることができました。
マテリアルをスクリプトから変更する
マテリアルをスクリプトから変更することもできます。
下のようなコードをマテリアルがセットされたオブジェクトのスクリプトに追加することで
マテリアルの色をスクリプトから直接変更できます。
GetComponent<Renderer>().material.color = Color.red;
オススメアセット
Tiling Material Pack Free
こちらのアセットは12個のマテリアルが含まれた無料アセットです。
マテリアルはたくさん種類を持っておけばいろいろと試せて便利です。
無料で12個も使えるのはとてもありがたいですね。
AllSky – 220+ スカイ / スカイボックスセット
こちらはゲーム画面の背景となるSkyboxのマテリアルが220個以上含まれた有料アセットです。
Skyboxをたくさん持っておくと、どんな雰囲気のゲームの背景も簡単に設定できるので非常に便利です。
昼と夜のSkyboxはもちろん、夕焼けや宇宙なども用意されており、背景作りに困ることがなくなります。
まとめ
- マテリアルをオブジェクトに設定することで色や質感などを変更することができる
- デフォルトマテリアルは設定を変更することができない
- マテリアルを一括で変更することもできる
- マテリアルを変更するアニメーションを設定することができる
以上、オブジェクトのマテリアルを変更する方法について解説してきました!
マテリアルを変更するだけでゲームの見た目が一気にそれっぽくなります。
自分で全部のマテリアルを作成するのはなかなか大変なので、アセットなどもうまく使って開発効率をアップしたいですね!