アセット
概要
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.OdinInspector.Editor; using System; using System.Collections.Generic; using System.Reflection; public class DataEditor : OdinAttributeProcessor<Data> { public override void ProcessSelfAttributes ( InspectorProperty property, List<Attribute> attributes ) { attributes.Add( new TitleAttribute( "情報" ) ); } public override void ProcessChildMemberAttributes ( InspectorProperty parentProperty, MemberInfo member, List<Attribute> attributes ) { if ( member.Name == "m_id" ) { attributes.Add( new LabelTextAttribute( "番号" ) ); } else if ( member.Name == "m_name" ) { attributes.Add( new HideLabelAttribute() ); attributes.Add( new MultiLinePropertyAttribute( 3 ) ); } } }
「Attribute Processors」を使用することで
特定のクラスのパラメータに属性を付与できます
クラス定義で属性を記述する必要がなくなるので、
クラス定義のコードをキレイに保つことができます
また、サードパーティ製のコードに外部から属性を適用することもできます