エディタ拡張/ユーティリティ
新作無料 【リリース日】2018年10月4日
コードに属性を追加して、Inspectorの表示や利便性をアップさせるエディタです。
簡単に説明すると、人気アセット「Odin」に近いタイプのアセットです。
まだOdinを持ってない方は特にオススメです。
快適にゲーム開発ができる環境作りを整えよう!
全ての属性に関してはGithubにGifアニメ付きで丁寧に紹介されています。
もはや説明不要ですが、Unity2018.2.5f1で全て動作検証を行いました。
コピペして素早く使えるようにテキスト化してあります。
【Unity公式キャンペーン】
Unity Proライセンスを検討している方必見!
2018年11月18日までに契約すると、開発に役立つ特典と人気アセット3つが手に入る!
URL:Unity Pro with Teams Advanced
- スライダー
- スライダー(最小最大)
- 配列型フィールド(要素の並び替え)
- メソッドを「ボタン化」してクリックで実行
- ドロップダウンメニュー
- サイズ変更可能なテキストエリア
- ShowNonSerializedField(非シリアルの表示)
- ShowNativeProperty(ネイティブC#プロパティ)
- ReadOnly(publicでも表示のみにする)
- EnableIf / DisableIf(フィールドの条件判定)
- ShowAssetPreview(画像とPrefabのプレビュー)
- ProgressBar(ロード状況の確認などに)
- ShowIf / HideIf(判定で表示&非表示)
- BoxGroup(グループ名でフィールドをBox表示)
- MinValue / MaxValue(最大、最小値のクランプ)
- Required(フィールド空欄でエラーメッセージ)
- ValidateInput(条件が成立してないとエラー表示)
- InfoBox(エラー、インフォ、警告の追加表示)
- OnValueChanged(値が変化した時に呼び出す)
- 独自の属性を作成する方法
参考サイト
using NaughtyAttributes;
スライダー
[Slider(0, 10)] public int intSlider; public float floatSlider;
スライダー(最小最大)
[MinMaxSlider(0f, 10f)] public Vector2 mixMaxSlider;
配列型フィールド(要素の並び替え)
[ReorderableList] public int[] intArray; [ReorderableList] public List<float> floatArray;
メソッドを「ボタン化」してクリックで実行
[Button] private void MethodOne() { } [Button("Button Text")] private void MethodTwo() { }
メソッドはボタンとしてマークすることができます。 インスペクタにボタンが表示され、クリックするとメソッドが実行されます。 インスタンスメソッドと静的メソッドの両方で動作します。
ドロップダウンメニュー
[Dropdown("intValues")] public int intValue; [Dropdown("stringValues")] public string stringValue; [Dropdown("vectorValues")] public Vector3 vectorValue; private int[] intValues = new int[] { 1, 2, 3, 4, 5 }; private string[] stringValues = new string[] { "A", "B", "C", "D", "E" }; private DropdownList<Vector3> vectorValues = new DropdownList<Vector3>() { { "Right", Vector3.right }, { "Left" , Vector3.left }, { "Up" , Vector3.up }, { "Down" , Vector3.down }, { "Forward" , Vector3.forward }, { "Back" , Vector3.back }, };
サイズ変更可能なテキストエリア
[ResizableTextArea] public string resizableTextArea;
テキスト全体を見ることができるサイズ変更可能なテキスト領域。 特定のテキストの3行しか見ることができないUnityのMultilineおよびTextArea属性とは異なり、それを見たり変更したりするには、手動で目的の行にスクロールダウンする必要があります。
ShowNonSerializedField(非シリアルの表示)
[ShowNonSerializedField] private int myInt = 10; [ShowNonSerializedField] private const float PI = 3.14159f; [ShowNonSerializedField] private static readonly Vector3 CONST_VECTOR = new Vector3(1f, 1f, 1f);
インスペクタでシリアル化されていないフィールドを表示します。 すべてのシリアル化されていないフィールドは、メソッドボタンの前にインスペクタのボットンに表示されます。 コード内の静的でない非シリアル化フィールドを変更すると、エディタで「再生」を押すとインスペクタの値が更新されることに注意してください。 静的非直列化フィールドは、コンパイル時にその値が更新されるため、このような問題はありません。 また、値の型と文字列(int、long、float、double、string、Vector2、Vector3、Vector4、Color、Bounds、Rect)のみをサポートしています。
ShowNativeProperty(ネイティブC#プロパティ)
public int TransformsCountの値が最後尾に表示される。
int、long、float、double、stringなど値や文字列の型に対応。
public List<Transform> transforms; [ShowNativeProperty] public int TransformsCount { get { return this.transforms.Count; } }
インスペクタのネイティブC#プロパティを表示します。 すべてのネイティブプロパティは、シリアル化されていないフィールドの後とメソッドボタンの前にインスペクタの下部に表示されます。 また、値の型と文字列(int、long、float、double、string、Vector2、Vector3、Vector4、Color、Bounds、Rect)のみをサポートしています。
ReadOnly(publicでも表示のみにする)
publicフィールドでも表示のみにする
[ReadOnly] public Vector3 forwardVector = Vector3.forward;
EnableIf / DisableIf(フィールドの条件判定)
フィールドのEnable/Disableのif判定
public bool enableMyInt; [EnableIf("enableMyInt")] public int myInt; [EnableIf("Enabled")] public float myFloat; [EnableIf("NotEnabled")] public Vector3 myVector; public bool Enabled() { return true; } public bool NotEnabled() { return false; }
ShowAssetPreview(画像とPrefabのプレビュー)
スプライトとPrefabをプレビュー
[ShowAssetPreview] public Sprite sprite; [ShowAssetPreview(128, 128)] public GameObject prefab;
ProgressBar(ロード状況の確認などに)
[ProgressBar] public float Health = 42; [ProgressBar("Coins found", 25, ProgressBarColor.Yellow)] public int CoinsFound = 3;
ShowIf / HideIf(判定で表示&非表示)
public bool showInt; [ShowIf("showInt")] public int myInt; [ShowIf("A1waysShow")] public float myFloat; [ShowIf("NeverShow")] public Vector3 myVector; private bool AlwaysShow() { return true; } private bool NeverShow() { return false; }
BoxGroup(グループ名でフィールドをBox表示)
フィールドをグループで囲った表示
[BoxGroup("Integers")] public int firstlnt; [BoxGroup("Integers")] public int secondlnt; [BoxGroup("Floats")] public float firstFloat; [BoxGroup("Floats")] public float secondFloat;
MinValue / MaxValue(最大、最小値のクランプ)
整数と浮動小数をクランプ
[MinValue(0), MaxValue(10)] public int myInt; [MinValue(0f)] public float myFloat;
Required(フィールド空欄でエラーメッセージ)
参照型フィールドが空欄のままだとエラー表示。コンソールにも表示される。
[Required] public Transform myTransform; [Required("Custom required text")] public GameObject myGameObject;
ValidateInput(条件が成立してないとエラー表示)
空欄のまま、もしくは条件が成立してないとエラーを表示する
[ValidateInput("IsNotNull")] public Transform myTransform; [ValidateInput("IsGreaterThanZero", "mylnteger must be greater than zero")] public int myInt; private bool IsNotNull(Transform transform) { return transform != null; } private bool IsGreaterThanZero(int integer) { return integer > 0; }
InfoBox(エラー、インフォ、警告の追加表示)
エラー、インフォ、警告アイコンの表示とテキストの追加情報の表示
関数判定IsMyIntNotEven()がtrueならmyIntのInfoBoxが非表示になる。
[InfoBox("myInt is not even", InfoBoxType.Error, "IsMyIntNotEven")] public int myInt; [InfoBox("This is myFloat")] public float myFloat; [InfoBox("This is myVector", InfoBoxType.Warning)] public Vector3 myVector; private bool IsMyIntNotEven() { return this.myInt % 2 != 0; }
OnValueChanged(値が変化した時に呼び出す)
値が変化したら関数が呼ばれる
[OnValueChanged("OnValueChanged")] public int myInt; private void OnValueChanged() { Debug.Log(this.myInt); }
独自の属性を作成する方法
新規にオリジナル属性を追加する事が可能です。
※ 説明通りに実装してみたら上手くいかなかったので、独自の方法を紹介します。
手順は3つ
1.Attributeクラスを作る
2.表示用のドロワーを作る
3.DBに直接追加する
練習として「ReadOnly」の複製「ReadOnlyTest」属性を作ります。
① 下記PathにReadOnlyTestAttribute.csを作りました。
ソースコード
using System; namespace NaughtyAttributes { [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] public class ReadOnlyTestAttribute : DrawerAttribute { } }
② 次にドロワーを作成します。
下記PathにReadOnlyTestPropertyDrawer.csを作りました。
using UnityEditor; using UnityEngine; namespace NaughtyAttributes.Editor { [PropertyDrawer(typeof(ReadOnlyTestAttribute))] public class ReadOnlyTestPropertyDrawer : PropertyDrawer { public override void DrawProperty(SerializedProperty property) { GUI.enabled = false; EditorDrawUtility.DrawPropertyField(property); GUI.enabled = true; } } }
③ データベースに登録します。
最後に、エディタがこの属性の引き出しを認識するためには、エディタのツール/ NaughtyAttributes / Update属性データベースメニュー項目を押す必要があります。
Tools > NaughtyAttributes > Update Attributes Database
実行するとDBに登録されるそうですが、されなかったので直接登録しました。
「PropertyDrawerDatabase.cs」を開いて、コードを追加します。
drawersByAttributeType[typeof(ReadOnlyTestAttribute)] = new ReadOnlyTestPropertyDrawer();
これで完成です。
[ReadOnlyTest] public int readOnly;
「ReadOnlyTest」期待通りに動作しました!
サンプル画像
アセット説明(機械翻訳)
Unity 2018.2.1以降のバージョンが必要
NaughtyAttributesはUnity Inspectorの拡張です。
これはUnityが提供する属性の範囲を広げるので、カスタムエディタやプロパティドロワーを使わずに強力なインスペクタを作成することができます。 また、非シリアル化フィールドや関数に適用できる属性も提供します。
あなたのカスタムエディターとプロパティードロワーは、いかなる形でも影響を受けません
GitHub Repo / Documentation
Support
特徴
- オープンソース
- 引き出し
- 条件を描く
- グループ化
- 入力検証
プラットフォーム
- PC、Mac、Linux
- Android
- iOS
- 任天堂のスイッチ
- PS4
- XBOX ONE
パブリッシャーのアセット(記録用)
【毎日更新】アセット割引情報サイト
リアルタイムでセール情報を毎日更新しています。
「作家セール、無料アセット、新作アセット」の最新情報を入手しよう!
※ 土曜・日曜・月曜はアセットストアのお休み。
今年のイチオシアセット
バーチャルYoutuberシロがご紹介する2018年度のオススメアセット
過去セールから神アセットを探す
過去大セールで登場したタグです。ぜひご活用下さい。
- MADNESS SALE カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Back to School セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Unite 2017 Tokyo記念セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Biggest Sale Ever カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Wishlist Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Holiday Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
※右サイドバーの「月別アーカイブ」や「タグ」からチェックすることもできます。
アセットの検索方法
検索ボックスから「アセット名」「希望する機能のワード」を入力してチェックしてください。
【2018年度】無料化&無料アセットまとめ
【3Dモデル】
【シェーダ・パーティクル・Skybox】
【テクスチャ&マテリアル】
【過去ログ】無料アセット
【過去ログ】作者セール&注目アセット