Version: 2023.2
言語: 日本語
スクリプタブルタイルの例
GridBrushBase

スクリプタブルブラシ

スクリプタブルブラシの作成

GridBrushBase (あるいは GridBrush などの、GridBrushBase のサブクラスで使用可能なもののどれか)から継承して新規クラスを 1 つ作成してください。この新規 Brush クラスのために必要なメソッドを全てオーバーライドしてください。通常は以下のメソッドをオーバーライドします。

  • Paint - ブラシが、ターゲットのグリッド上にアイテムを追加します。
  • Erase - ブラシが、ターゲットのグリッドからアイテムを削除します。
  • FloodFill - ブラシが、ターゲットのグリッドをアイテムで塗りつぶします。
  • Rotate - ブラシ内に設定されたアイテムを回転させます。
  • Flip - ブラシ内に設定されたアイテムをフリップします。

ScriptableObject.CreateInstance<(Your Brush Class>() を使用して、新しく作成したクラスのインスタンスを作成してください。 AssetDatabase.CreateAsset() を呼び出せば、この新しいインスタンスをエディター内でアセットに変換でき、繰り返し使用することができるようになります。

ブラシ用にカスタムエディターを作成することもできます。これは、スクリプタブル オブジェクト用のカスタムエディターと同じように機能します。カスタムエディターを作成する場合にオーバーライドするメソッドの主要なものは以下の通りです。

  • OnPaintInspectorGUI をオーバーライドすると、ブラシの選択時にパレットに Inspector ウィンドウを表示し、ペイント時に追加の動作を加えることができます。
  • OnPaintSceneGUI をオーバーライドすると、 SceneView 上でのペイント時に追加の動作を加えることができます。
  • validTargets をオーバーライドすると、ブラシがインタラクトできるターゲットのリストをカスタム作成できます。このターゲットリストは Palette ウィンドウ上にドロップダウンリストの形で表示されます。

作成されたスクリプタブルブラシは Palette ウィンドウの Brushes ドロップダウンメニューに表示されます。デフォルトでは、Scriptable Brushのスクリプトのインスタンスが 1 つインスタンス化され、プロジェクトの Library フォルダー内に保存されます。ブラシのプロパティに加えられた変更はそのインスタンス内に保存されます。異なるプロパティを持つ複数のブラシが必要な場合は、プロジェクト内にアセットとしてブラシをインスタンス化できます。こうしたブラシアセットは、ブラシドロップダウンメニューのリストに個々に表示されます。

Scriptable Brush クラスには CustomGridBrush 属性を追加することができます。これにより、Palette ウィンドウ内でのブラシ挙動の設定が可能になります。 CustomGridBrush 属性には以下のプロパティがあります。

  • HideAssetInstances - これを true に設定すると、作成されたブラシアセットの全てのコピーが Palette ウィンドウ内で非表示になります。これは、 Palette ウィンドウの Brush ドロップダウンメニューにデフォルトのインスタンスのみを表示したい場合に便利です。
  • HideDefaultInstances - これを true に設定すると、Palette ウィンドウ内のブラシアセットのデフォルトインスタンスが非表示になります。これは、Palette ウィンドウの Brush ドロップダウンメニューに、作成したアセットのみを表示したい場合に便利です。
  • DefaultBrush - これを true にすると、ブラシのデフォルトのインスタンスがプロジェクトのデフォルトブラシに設定されます。これを行うと、プロジェクト起動時に毎回このブラシのインスタンスがデフォルト選択のブラシとして設定されます。ノート: デフォルトブラシに設定するスクリプタブルブラシは 1 つのみにしてください。複数のデフォルトブラシを設定すると、スクリプタブルブラシが正しく動作しない可能性があります。
  • DefaultName - これに名前を設定すると、ブラシドロップダウンメニューで、ブラシのクラス名ではなく、設定した名前がブラシの名前として使用されます。

Scriptable Brush クラスで特定のツールだけを使用したい場合は、 BrushTools 属性を追加して、互換性のある TilemapEditorTools タイプのリストをクラスに追加できます。これにより、スクリプタブルブラシは、タイルパレットのツールバーからこれらの特定のツールを使用してのみアクティブになります。

ノート: 確実に新しいブラシアセットを保存するために、プロジェクトを保存することを忘れないでください。

スクリプタブルタイルの例
GridBrushBase