はじめに
はじめまして、ソーシャルゲーム事業部のUnityエンジニアのナタニエルです。
この記事はカヤックUnityアドベントカレンダー2018の10日目の記事になります。
本記事では自分がUnityで演出を作る作業の間見つけたUnity本来の便利な機能の紹介をします。
そして最初に断って置きますが、以下の画像やスクリーンショットはUnityバージョン5.6で取られました。
演出作成中に知ってると便利な機能
インスペクターのリストに複数のオブジェクトやコンポネントを一気に設定する方法
SerializeField
やpublic
でGameObject
やコンポネントのリファレンスを複数保持したいときには一つ一つのオブジェクトをドラッグするより、以下の手順で複数同時に設定できます。
1.Inspector
をロックします
インスペクターのタブの右上に開いた錠前があります。
Inspector
をロックするためにはこちらの錠前をクリックします。
2.設定したいオブジェクトかコンポネントを選択し、ドラッグします
※終わった後錠前の解除も忘れないでください。
色情報の保存・読み込み
Unity
のColor
のウィンドウの下にはPresets
ってところがあります。
このPresets
は以下のように使えます。
- 現在の色の情報を保存
- 保存された色の情報を読み込む
保存する方法はPresets
には現在の色が表示されてるボタンのようなものがあります。
それをクリックするだけで色の情報は保存されます。
保存された色情報を読み込むには保存された色情報をクリックするだけです。
※最新のUnityではSwatches
と呼ばれます。
https://docs.unity3d.com/ja/current/Manual/PresetLibraries.html
生成されたパーティクルを後で動かす方法
普段パーティクルシステムを使う時、生成されたパーティクルの動きは全部パーティクルシステムの設定で制御されてます。
ただし、その設定された動きの上に別の動きを加えたい時もあります。
探した結果、UnityのコンポネントのWindZone
で上記のことができます。
WindZone
は風の影響を地形に与えるためのコンポーネントですが、パーティクルの動きに干渉させることもできます。
これによってパーティクスシステムによって生成されたパーティクルをパーティクルシステム内で設定された動き以外で動かすことができます。
先ずは動かないパーティクルを生成するパーティクルシステムを準備します。
※動かないのは単に効果を分かりやすく見せるためです。
そしてWindZone
を設置します。
生成されたパーティクルがWindZone
の効果を受けるための設定をします。
実際に動かしてみます。
※公式のWindZone
の情報です。
https://docs.unity3d.com/ja/current/Manual/terrain-WindZones.html
Inspector
に公開された変数の見た目の整理
コンポネントのスクリプトを作成する時、変数をInspector
に公開することが結構あります。
公開された変数が少ない場合はそんなに気になりませんが、数が多くなると見づらくなります。
この場合はHeader
という属性を使うことで表示された変数を区分して、見やすくすることができます。
おまけ
パーティクルシステムに2つマテリアルが設定された時の解決方法
この問題は5.5と5.6に発生した問題で、2017.1にはもう修正されました。
多分もうあまり使われてませんが、もし問題がまだあるバージョンを使っててこの問題を遭遇した場合の対策として目を通して貰えれば幸いです。
先ずは問題の方です。
上記で指定された問題有りバージョンで時々パーティクルシステムのマテリアルを変更する時以下の状態に遭遇することはあると思います。
見ての通り、2つのマテリアルが設定されてますが、Renderer
の中には一つのマテリアルしか表示されてません。
その表示されてるマテリアルを右クリックしても削除するコマンドがなくて、Renderer
に表示されてるマテリアルをNone
にしてもそのRenderer
に使われたマテリアルしか消えなくて、もうひとつのマテリアルがそのまま残ってます。
自分も最初の頃結局諦めて、もう一回最初からそのパーティクルシステムを組み込むことにしました。
けれど、この問題を簡単に解決する方法がありました。
以下の手順を実行すれば、その余分のマテリアルを削除できます。
1.Trails
を有効に
二つ目の余分のマテリアルはTrails
を有効にすることによってRenderer
のTrail Material
として設定されてます。
2.Trail Material
に設定されてるマテリアルをNone
に
3.Trails
を使ってない場合はまた無効に
これで二つ目のマテリアルを削除できました!
上記の情報は以下のUnity Answers
からです。
https://answers.unity.com/questions/1423075/particle-multiple-material.html
おわりに
以上で少ないながらこちらから提供できる小ネタになります。
明日は君塚さんの「Oculus Go向けコンテンツを最速で作るぞ」です。 ぜひ読んでみてください!