コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Odin で Inspector の Script の欄を非表示にする方法

概要 コンポーネントの Inspector に表示される「Script」の欄を非表示にしたい場合は using Sirenix.OdinInspector; using UnityEngine; [HideMonoScript] public class Example : MonoBehaviour { public string m_name; } HideMonoScript をクラスに付け…

【Unity】IL2CPP ビルドした環境で Odin のシリアライズ周りでエラーが発生する場合の対応方法

はじめに 例えば上記のように JobType という列挙型が存在し、 その列挙型を Dictionary で使用している CharacterData という SerializedScriptableObject が存在する場合に Example.Awake で Resources.Load を使用して CharacterData を読み込もうすると …

【Unity】Odin Inspector 3.0 Beta が公開

概要

【Unity】【Odin Inspector】interface を Inspector でアタッチできるようにする方法

はじめに Odin Inspector を Unity プロジェクトに導入することで interface を Inspector でアタッチできるようになります 概要 public interface ICharacter { void Log(); } 例えば ICharacter インターフェイスを定義して、 using UnityEngine; public c…

【Unity】【Odin Inspector】Inspector の表示形式を Odin ではなく従来の方式に戻すことができる「DrawWithUnity」属性

使用例 使い方 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { public GameObject m_odinFormat; [DrawWithUnity] public GameObject m_unityFormat; } DrawWithUnity を変数に適用することで使用できます 関連記…

【Unity】【Odin Inspector】Inspector で列挙型の値をボタンで変更できる「EnumPaging」属性

使用例 使い方 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [EnumPaging] public enum Type { A, B, C } public Type m_type; } EnumPaging 属性を列挙型や変数に適用することで使用できます 関連記事

【Unity】【Odin Inspector】Inspector の入力欄の末尾に文字列を表示できる「SuffixLabel」属性

使用例 使い方 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [SuffixLabel( "秒" )] public float m_time1; [SuffixLabel( "秒", true )] public float m_time2; } SuffixLabel を変数に適用することで使用でき…

【Unity】【Odin Inspector】Inspector の Script の欄を非表示にできる「HideMonoScript」属性

使用例 適用前 適用後 使い方 using Sirenix.OdinInspector; using UnityEngine; [HideMonoScript] public class Example : MonoBehaviour { } HideMonoScript 属性をクラスに適用することで使用できます 関連記事

【Unity】【Odin Inspector】Inspector で文字列が設定されていない場合、Inspector に警告を出力する機能を自作する

アセット 概要 using Sirenix.OdinInspector.Editor.Validation; [assembly: RegisterValidator( typeof( EmptyStringValidator ) )] public class EmptyStringValidator : ValueValidator<string> { protected override void Validate( string value, ValidationRes</string>…

【Unity】【Odin Inspector 2.1 新機能】Inspector でアセットの選択を容易にする属性「AssetSelector」が追加されました

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [AssetSelector] public Texture m_texture; [AssetSelector] public Texture[] m_textureList; [AssetSelector( Paths = "Assets/Icons" )] public…

【Unity】【Odin Inspector 2.1 新機能】Inspector で子オブジェクトのみを選択できるようにする属性「ChildGameObjectsOnly」が追加されました

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [ChildGameObjectsOnly] public GameObject m_gameObject; [ChildGameObjectsOnly] public BoxCollider m_boxCollider; } ChildGameObjectsOnly 属…

【Unity】【Odin Inspector 2.1 新機能】Unity エディタ上ですべての属性の使用例を閲覧できるようになりました

アセット 概要 Unity メニューの「Tools > Odin Inspector > Attribute Overview」を選択することで Unity エディタ上ですべての属性の使用例を閲覧できます

【Unity】プロジェクト全体(シーンのゲームオブジェクトや ScriptableObject などのアセット)に含まれる問題を検出できる「Odin Project Validator」の基本的な使い方

はじめに 「Odin Project Validator」は「Odin Inspector」と連携して使用できる検証ツールです Unity 再生時、ビルド時、Unity プロジェクト起動時に シーン内のゲームオブジェクトにアタッチされているコンポーネントや ScriptableObject などのアセットに…

【Unity】2019/5/28 までに Asset Store で「Odin Inspector and Serializer」を購入済みの方は、公式サイトから無料で「Odin Project Validator」「Odin Inspector ソースコード」を入手できます

はじめに Odin Inspector のアドオンとして Odin Project Validator(プロジェクト全体の問題を検出するツール) Odin Inspector ソースコード が公式サイトで公開されました 2019/5/28 までに Asset Store で「Odin Inspector and Serializer」を購入済みの…

【Unity】「Odin Inspector」「Odin Project Validator」「Odin Inspector ソースコード」が公式サイトで 2019/7/29 まで 30% OFF で購入できます

概要 2019/7/29 まで、Asset Store ではなく上記の公式サイトの購入ページで Odin Inspector Odin Project Validator(プロジェクト全体の問題を検出するツール) Odin Inspector ソースコード が 30% OFF で購入できます また、2019/5/28 までに Asset Stor…

【Unity】【Odin】Inspector で配列やリストを常に開いた状態にする方法

概要 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [ListDrawerSettings( Expanded = true )] public string[] m_list; } ListDrawerSettings 属性で Expanded に true を設定する

【Unity】【Odin Inspector 2.0.4.0 新機能】列挙型に付与できる属性が追加されました

アセット 概要 using Sirenix.OdinInspector; using System; using UnityEngine; public enum Type { // 警告アイコン表示、カーソルを合わせるとテキスト表示 [Obsolete( "非推奨" )] Normal, // 情報アイコン表示、カーソルを合わせるとテキスト表示 [Info…

【Unity】Odin Inspector and Serializer 2.0 新機能まとめ

はじめに 2018/8/9 に「Odin Inspector and Serializer」の 2.0 がリリースされたので、 2.0 から使用できるようになった新機能についてまとめました 新機能一覧 任意のクラスの static 変数やプロパティの閲覧や編集、static 関数の実行ができる「Static In…

【Unity】【Odin Inspector 2.0 新機能】任意のクラスの static 変数やプロパティの閲覧や編集、static 関数の実行ができる「Static Inspector Utility」

アセット 概要 Unity メニューの「Tools>Odin Inspector>Static Inspector」を選択して 「SelectType」を選択して 任意のクラスを選択することで そのクラスの static 変数やプロパティの値を閲覧できます 編集可能な変数やプロパティの値は編集することもで…

【Unity】【Odin Inspector 2.0 新機能】static 変数やプロパティの値を Inspector に表示できる「ShowInInspector」

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [ShowInInspector] private static string m_hoge; [ShowInInspector] private static string m_fuga { get { return "ライチュウ"; } } } 「ShowIn…

【Unity】【Odin Inspector 2.0 新機能】引数のある関数を Inspector から実行できる「Button」

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [Button] private void Default( float t, float b, float[] c ) { } [Button( ButtonSizes.Medium, ButtonStyle.FoldoutButton )] private int Fol…

【Unity】【Odin Inspector 2.0 新機能】クラスに属性を適用する

アセット 概要 バージョン 2.0 まで using Sirenix.OdinInspector; using UnityEngine; public class MyClass<T> { public bool isEnabled; public T foo; public T bar; } public class Example : SerializedMonoBehaviour { [Required] [LabelWidth( 70 )] [T</t>…

【Unity】【Odin Inspector 2.0 新機能】表示領域に合わせてボタンのサイズを自動調整できる「ResponsiveButtonGroup」

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [ResponsiveButtonGroup( UniformLayout = true, DefaultButtonSize = ButtonSizes.Large )] public void FooFooFooFooFoo() { } [GUIColor( 0, 1, …

【Unity】【Odin Inspector 2.0 新機能】クラスに説明文を付与できる「TypeInfoBox」

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; [TypeInfoBox( "ピカチュウ" )] public class Example : MonoBehaviour { public string Name; public int X; public int y; } 「TypeInfoBox」属性を使用することで クラスに説明文を付与で…

【Unity】【Odin Inspector 2.0 新機能】InlineEditor 内で描画されているかどうかで表示・非表示が変わる「ShowInInlineEditors」「HideInInlineEditors」

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; [CreateAssetMenu] public class Data : ScriptableObject { [HideInInlineEditors] public string m_name; [ShowInInlineEditors] public int m_id; } using Sirenix.OdinInspector; using …

【Unity】【Odin Inspector 2.0 新機能】無効化されている GUI を有効化できる「EnableGUI」

アセット 概要 通常 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [ShowInInspector] public string Name { get { return "ピカチュウ"; } } } EnableGUI using Sirenix.OdinInspector; using UnityEngine; pub…

【Unity】【Odin Inspector 2.0 新機能】TableList 内で描画されている時のみ非表示になる「HideInTables」

アセット 概要 using Sirenix.OdinInspector; using System; [Serializable] public class Data { public int m_id; public string m_name; public float m_height; [HideInTables] public float m_weight; } using Sirenix.OdinInspector; using UnityEngin…

【Unity】【Odin Inspector 2.0 新機能】変数、プロパティ、関数の前後にスペースを表示できる「PropertySpace」

アセット 概要 using Sirenix.OdinInspector; using UnityEngine; public class Example : MonoBehaviour { [Space] public int MyField; [ShowInInspector, PropertySpace( 16 )] public int MyProperty1 { get; set; } [ShowInInspector, PropertySpace( 1…

【Unity】【Odin Inspector 2.0 新機能】InlineEditor 属性の引数の追加

アセット 概要 2.x まで using Sirenix.OdinInspector; using UnityEngine; [CreateAssetMenu] [InlineEditor] public class Data : SerializedScriptableObject { public Data m_self; [InlineEditor] public PhysicsMaterial2D m_mat; [ShowInInspector] […

【Unity】【Odin Inspector 2.0 新機能】特定のクラスのパラメータに属性を付与できる「Attribute Processors」

アセット 概要 using System; [Serializable] public class Data { public int m_id; public string m_name; } using UnityEngine; public class Example : MonoBehaviour { public Data m_data; } using Sirenix.OdinInspector; using Sirenix.OdinInspecto…