7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unityインスペクタ拡張ライブラリ「NaughtyAttributes」

Last updated at Posted at 2023-01-20

NaughtyAttributesについて

Unityのインスペクタを拡張するライブラリです。
[Button][Label]などC#アトリビュートが追加され簡単にインスペクタツールを作ることができるようになります。

インストール方法

MIT ライセンス

Githubでのスター数は4.3k
※ 有名ライブラリのスター数
(UniTask: 7.5k, UniRx: 7k, DOTween: 2.3k, InputSystem: 1.4k, ShaderGraph: 1.2k)

類似のライブラリとしてはOdinが有名かと思いますが、$60.50の有償シートラインセンスのため導入ハードルが高めです。
その点NaughtyAttributesはOdinほど機能は多くありませんがオープンソースなので気軽に利用できます。

主要な機能

Button

インスペクタにボタンが表示され、押すとメソッドが実行されます
テスタビリティが向上します

[Button]
private void SomeMethod() { }

[Button("カスタム")]
private void SomeMethod2() { }

naughtyattributes_button.png

ドキュメント

Label

フィールドに別名を付ける機能です
非エンジニアに分かりやすくするのに便利です

[SerializeField, Label("カスタムラベル")]
private string _foo;

naughtyattributes_label.png

ドキュメント

ShowIf / HideIf

条件によってフィールドの表示/非表示を行います
コンポーネントが複数の機能を持つ時、特定の機能が有効なときにだけ関連フィールドを表示するのに便利です

[SerializeField]
private bool _isOn;

[SerializeField, ShowIf(nameof(_isOn))]
private int _foo;

Offのとき
naughtyattributes_showif_1.png

Onのとき
naughtyattributes_showif_2.png

ドキュメント

EnableIf / DisableIf

条件によってフィールドの有効化/無効化を行います
特定のフィールドが有効なときにだけ関連フィールドを有効化するのに便利です

[SerializeField]
private bool _isOn;

[SerializeField, EnableIf(nameof(_isOn))]
private int _foo;

Offのとき
naughty_attributes_enableif_1.png

Onのとき
naughty_attributes_enableif_2.png

ドキュメント

Foldout

複数のフィールドの折りたたみを行います

[SerializeField, Foldout("Private")]
private int _foo;

[SerializeField, Foldout("Private")]
private int _bar;

折りたたみ時
naughtyattributes_foldout_1.png

展開時
naughtyattributes_foldout_2.png

ドキュメント

ReadOnly

読み取り専用になります

[ReadOnly]
public Vector3 Foo;

naughtyattributes_readonly.png

ドキュメント

OnValueChanged

インスペクタで値が変わったときにコールバックを受け取ることができます
値が変わったときに何か処理するには[OnValidate][ExecuteAlways]を使用することが多いと思いますが、[OnValueChanged]はフィールドごとにコールバックを受けられるのでより細かな制御ができます

[OnValueChanged(nameof(OnValueChanged))]
public int foo;

private void OnValueChanged()
{
    Debug.Log(foo);
}

ドキュメント

その他の機能

上記以外にも、[Dropdown][ShowNativeProperty]など使える機能が結構あります。
Readme公式ドキュメントに一覧があるので見てみてください。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?