Unity AssetStoreまとめ

アセットストア日替わりタイムセールの記事を書いていきます。

【新作無料アセット】Unity Inspectorの表示を拡張するOdinスタイルの便利アセットが登場!スライダー、要素の並び替え、スプライト&Prefabのプレビュー、プログレスバー、要素のグループ化など、オリジナル属性も作れる自由度の高いエディタ「NaughtyAttributes」

スポンサーリンク

f:id:assetsale:20181005215009j:plain

NaughtyAttributes

エディタ拡張/ユーティリティ

Denis Rizov

新作無料    【リリース日】2018年10月4日

 

コードに属性を追加して、Inspectorの表示や利便性をアップさせるエディタです。

 

簡単に説明すると、人気アセット「Odin」に近いタイプのアセットです。

まだOdinを持ってない方は特にオススメです。

 

快適にゲーム開発ができる環境作りを整えよう!

 

全ての属性に関してはGithubにGifアニメ付きで丁寧に紹介されています。

もはや説明不要ですが、Unity2018.2.5f1で全て動作検証を行いました。

コピペして素早く使えるようにテキスト化してあります。

 


 

【Unity公式キャンペーン】

Unity Proライセンスを検討している方必見!

2018年11月18日までに契約すると、開発に役立つ特典と人気アセット3つが手に入る!

URL:Unity Pro with Teams Advanced

 


 

 

参考サイト

 

using NaughtyAttributes;

 

スライダー

f:id:assetsale:20181005221909p:plain

[Slider(0, 10)]
public int intSlider;
public float floatSlider;

 

スライダー(最小最大)

f:id:assetsale:20181005221858p:plain

[MinMaxSlider(0f, 10f)]
public Vector2 mixMaxSlider;

 

配列型フィールド(要素の並び替え)

f:id:assetsale:20181005221851g:plain

[ReorderableList]
public int[] intArray;

[ReorderableList]
public List<float> floatArray;

 

メソッドを「ボタン化」してクリックで実行

f:id:assetsale:20181005221835p:plain

[Button]
private void MethodOne()
{
}

[Button("Button Text")]
private void MethodTwo()
{
}

 

メソッドはボタンとしてマークすることができます。 インスペクタにボタンが表示され、クリックするとメソッドが実行されます。 インスタンスメソッドと静的メソッドの両方で動作します。

 

ドロップダウンメニュー

f:id:assetsale:20181005222933g:plain

    [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 },
    };
 
サイズ変更可能なテキストエリア

f:id:assetsale:20181005223111g:plain

[ResizableTextArea]
public string resizableTextArea;

 

テキスト全体を見ることができるサイズ変更可能なテキスト領域。 特定のテキストの3行しか見ることができないUnityのMultilineおよびTextArea属性とは異なり、それを見たり変更したりするには、手動で目的の行にスクロールダウンする必要があります。

 

 

ShowNonSerializedField(非シリアルの表示)

f:id:assetsale:20181005223330p:plain

[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#プロパティ)

f:id:assetsale:20181005223713p:plain

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でも表示のみにする)

f:id:assetsale:20181005230009p:plain

publicフィールドでも表示のみにする

[ReadOnly]
public Vector3 forwardVector = Vector3.forward;
EnableIf / DisableIf(フィールドの条件判定)

f:id:assetsale:20181005230018g:plain

フィールドの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のプレビュー)

f:id:assetsale:20181005230031p:plain

スプライトとPrefabをプレビュー

[ShowAssetPreview]
public Sprite sprite;

[ShowAssetPreview(128, 128)]
public GameObject prefab;
ProgressBar(ロード状況の確認などに)

f:id:assetsale:20181005230046g:plain

[ProgressBar]
public float Health = 42;

[ProgressBar("Coins found", 25, ProgressBarColor.Yellow)]
public int CoinsFound = 3;

 

ShowIf / HideIf(判定で表示&非表示)

f:id:assetsale:20181005230055g:plain

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表示)

f:id:assetsale:20181005230106p:plain

フィールドをグループで囲った表示

[BoxGroup("Integers")]
public int firstlnt;

[BoxGroup("Integers")]
public int secondlnt;

[BoxGroup("Floats")]
public float firstFloat;

[BoxGroup("Floats")]
public float secondFloat;
MinValue / MaxValue(最大、最小値のクランプ)

f:id:assetsale:20181005230116g:plain

整数と浮動小数をクランプ

[MinValue(0), MaxValue(10)]
public int myInt;

[MinValue(0f)]
public float myFloat;
Required(フィールド空欄でエラーメッセージ)

f:id:assetsale:20181005230125p:plain

参照型フィールドが空欄のままだとエラー表示。コンソールにも表示される。

[Required]
public Transform myTransform;

[Required("Custom required text")]
public GameObject myGameObject;
ValidateInput(条件が成立してないとエラー表示)

f:id:assetsale:20181005230136p:plain

空欄のまま、もしくは条件が成立してないとエラーを表示する

[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(エラー、インフォ、警告の追加表示)

f:id:assetsale:20181005230145p:plain

エラー、インフォ、警告アイコンの表示とテキストの追加情報の表示

関数判定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(値が変化した時に呼び出す)

f:id:assetsale:20181005235626g:plain

値が変化したら関数が呼ばれる

[OnValueChanged("OnValueChanged")]
    public int myInt;

    private void OnValueChanged()
    {
        Debug.Log(this.myInt);
    }

 

独自の属性を作成する方法

新規にオリジナル属性を追加する事が可能です。

※ 説明通りに実装してみたら上手くいかなかったので、独自の方法を紹介します。

 

手順は3つ

1.Attributeクラスを作る

2.表示用のドロワーを作る

3.DBに直接追加する

 

練習として「ReadOnly」の複製「ReadOnlyTest」属性を作ります。

 

① 下記PathにReadOnlyTestAttribute.csを作りました。

f:id:assetsale:20181006012846j:plain

ソースコード

using System;

namespace NaughtyAttributes
{
    [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
    public class ReadOnlyTestAttribute : DrawerAttribute
    {
    }
}

 

② 次にドロワーを作成します。

下記PathにReadOnlyTestPropertyDrawer.csを作りました。

f:id:assetsale:20181006013206j:plain

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属性データベースメニュー項目を押す必要があります。

f:id:assetsale:20181006013444j:plain

Tools > NaughtyAttributes > Update Attributes Database

 

実行するとDBに登録されるそうですが、されなかったので直接登録しました。

 

f:id:assetsale:20181006013735j:plain

「PropertyDrawerDatabase.cs」を開いて、コードを追加します。

f:id:assetsale:20181006013816j:plain

 

drawersByAttributeType[typeof(ReadOnlyTestAttribute)] = new ReadOnlyTestPropertyDrawer();

 

これで完成です。

 

[ReadOnlyTest]
    public int readOnly;

 

f:id:assetsale:20181006014048p:plain

「ReadOnlyTest」期待通りに動作しました!

 

 

サンプル画像

f:id:assetsale:20181005215442j:plain

 

f:id:assetsale:20181005215446j:plain

 

 

アセット説明(機械翻訳)

Unity 2018.2.1以降のバージョンが必要
NaughtyAttributesはUnity Inspectorの拡張です。

これはUnityが提供する属性の範囲を広げるので、カスタムエディタやプロパティドロワーを使わずに強力なインスペクタを作成することができます。 また、非シリアル化フィールドや関数に適用できる属性も提供します。

あなたのカスタムエディターとプロパティードロワーは、いかなる形でも影響を受けません

GitHub Repo / Documentation
Support

特徴
- オープンソース
- 引き出し
- 条件を描く
- グループ化
- 入力検証

プラットフォーム
- PC、Mac、Linux
- Android
- iOS
- 任天堂のスイッチ
- PS4
- XBOX ONE

 

 

パブリッシャーのアセット(記録用)

f:id:assetsale:20181005215305j:plain

 


 

【毎日更新】アセット割引情報サイト

リアルタイムでセール情報を毎日更新しています。

「作家セール、無料アセット、新作アセット」の最新情報を入手しよう!

※ 土曜・日曜・月曜はアセットストアのお休み。

 

今年のイチオシアセット

バーチャルYoutuberシロがご紹介する2018年度のオススメアセット

 

 

過去セールから神アセットを探す

過去大セールで登場したタグです。ぜひご活用下さい。

f:id:assetsale:20180430173156j:plain

※右サイドバーの「月別アーカイブ」や「タグ」からチェックすることもできます。

 

 

アセットの検索方法

検索ボックスから「アセット名」「希望する機能のワード」を入力してチェックしてください。 

f:id:assetsale:20171128032556j:plain

 

 

 


 

 

【2018年度】無料化&無料アセットまとめ

 

【3Dモデル】

【シェーダ・パーティクル・Skybox】

【テクスチャ&マテリアル】

 

【過去ログ】無料アセット

【過去ログ】作者セール&注目アセット