コガネブログ

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

【Unity】Odin のような Attribute を使用できる「Tri Inspector」紹介

はじめに 「Tri Inspector」を Unity プロジェクトに導入することで Odin のような Attribute を使用できるようになります 使用例 https://github.com/codewriter-packages/Tri-Inspector 使用できる Attribute は上記のページに詳細に記載されています また…

【Unity】Attribute を指定するだけでプロパティや関数の呼び出し時にログ出力できる「Cecil Attributes」紹介

はじめに 「Cecil Attributes」を Unity プロジェクトに導入することで Attribute を指定するだけでプロパティや関数の呼び出し時にログ出力できるようになります ResetStaticAttribute // デフォルトでは Subsystem Registration のタイミングで // default…

【Unity】スクリプトの実行順を制御する属性を使用できる「Unity3D-ExecutionOrderAttribute」紹介

はじめに 「Unity3D-ExecutionOrderAttribute」を Unity プロジェクトに導入することで スクリプトの実行順を制御する属性を使用できるようになります 使い方 using UnityEngine; using System.Collections; [ExecutionOrder( 10 )] public class NormalBeha…

【Unity】属性を適用すると自動で GetComponent できる「Unity GetComponent Auto Injector」紹介

はじめに https://github.com/jinnin0105/UnityGetComponentAutoInjector 「Unity GetComponent Auto Injector」を Unity プロジェクトに導入することで 属性を適用すると自動で GetComponent できるようになります 使い方 using System.Collections.Generic…

【Unity】Inspector のパラメータの欄に GetComponentInChildren ボタンを追加する Attribute

ソースコード 使い方 using UnityEngine; public class Example : MonoBehaviour { [GetComponentInChildren] public BoxCollider collider; [GetComponentInChildren] public Rigidbody rigidbody; } スポイトボタンを押すと、 子オブジェクトから対象のコ…

【Unity】Inspector のパラメータの欄に GetComponent ボタンを追加する Attribute

ソースコード 使い方 using UnityEngine; public class Example : MonoBehaviour { [GetComponent] public Transform transform; [GetComponent] public Example example; } スポイトボタンを押すと、 ゲームオブジェクトから対象のコンポーネントを GetComp…

【Unity】Inspector で各種パラメータをプルダウンメニューで選択できる PropertyAttribute のコレクション「Unity Forge Property Drawers」紹介

はじめに 「Unity Forge Property Drawers」は Inspector で 各種パラメータをプルダウンメニューで選択できる PropertyAttribute のコレクションです 使用例 AnimationName [SerializeField, AnimationName] private string animationName; 下記のように記…

【Unity】2つの PropertyAttribute が使用できる「Essential Editor」紹介

はじめに 「Essential Editor」を Unity プロジェクトに導入することで 2つの PropertyAttribute が使用できるようになります 使用例 使い方 using EssentialEditor; using UnityEngine; public class Example : MonoBehaviour { [ExposeMethod] private voi…

【Unity】AudioClip のプレビュー再生ボタンを追加する PropertyDrawer「Unity3D_PropertyDrawer_AudioClip」紹介

はじめに 「Unity3D_PropertyDrawer_AudioClip」は AudioClip のプレビュー再生ボタンを追加する PropertyDrawer です 使用例 using UnityEngine; public class Example : MonoBehaviour { public AudioClip[] clips; } このようなコードを記述すると Inspec…

【Unity】Inspector 内に他オブジェクトのパラメータを表示する PropertyAttribute「DisplayInspector-Attribute」紹介

概要 「DisplayInspector-Attribute」を Unity プロジェクトに導入することで Inspector 内に他オブジェクトのパラメータを表示できるようになります 使用例 using UnityEngine; public class Example : MonoBehaviour { [DisplayInspector] public Transfor…

【Unity】Inspector 内に他オブジェクトの Custom Inspector を表示する PropertyAttribute「EmbeddedInspectorAttribute.cs」紹介

ソースコード 使用例 using RedBlueGames.Tools; using UnityEngine; public class Example : MonoBehaviour { [EmbeddedInspector] public RectTransform target; } 関連記事

【Unity】Inspector の項目をハイライト表示する PropertyAttribute「HighlightAttribute」紹介

はじめに https://gist.github.com/LotteMakesStuff/2d3c6dc7a913ed118601db95735574de 「HighlightAttribute」は Inspector の項目をハイライト表示する PropertyAttribute です 使用例 using UnityEngine; public class Example : MonoBehaviour { [Highli…

【Unity】Inspector にゲージを表示する PropertyAttribute「StatsBarAttribute」紹介

はじめに https://gist.github.com/LotteMakesStuff/b8853a16de3e680dc1c326fe6f5ebd7e 「StatsBarAttribute」は Inspector にゲージを表示する PropertyAttribute です 使用例 using UnityEngine; public class Example : MonoBehaviour { [StatsBar( "max"…

【Unity】Inspector の入力欄の色を変更できる PropertyDrawer「ColorMeDrawer」

ソースコード 使い方 「ColorMeDrawer.cs」は Unity プロジェクトの「Editor」フォルダ内に、 「ColorMeAttribute.cs」は Unity プロジェクトのどこかに追加することで使用できます using UnityEngine; public class Example : MonoBehaviour { [ColorMe( 1,…

【Unity】Game ビューに変数の値を表示する属性を使用できる「OpenWatcher」紹介

はじめに 「OpenWatcher」を Unity プロジェクトに導入することで Game ビューに変数の値を表示する属性を使用できるようになります 使用例 使い方 using UnityEngine; public class Example : MonoBehaviour { [Watch] public float speed; [Watch] public …

【Unity】26個の PropertyAttribute が使用できる「NaughtyAttributes」紹介

はじめに 「NaughtyAttributes」を Unity プロジェクトに導入することで 26個の PropertyAttribute が使用できるようになります 目次 はじめに 目次 Slider MinMaxSlider ReorderableList Button Dropdown ResizableTextArea ShowNonSerializedField ShowNat…

【Unity】Inspector で変数の参照が設定されていないオブジェクトを発見できる「NotNullAttribute」紹介

はじめに 「NotNullAttribute」を Unity プロジェクトに導入することで Inspector で変数の参照が設定されていないオブジェクトを発見できるようになります 使い方 using UnityEngine; public sealed class Example : MonoBehaviour { public GameObject m_g…

【Unity】シェーダを実装する時に MaterialPropertyDrawer を使用して Inspector の表示をカスタマイズする

はじめに シェーダを実装する時に MaterialPropertyDrawer を使用することで Inspector の表示をカスタマイズすることができます MaterialPropertyDrawer は自作することができますが 今回は Unity が標準で用意しているモノをいくつか紹介していきます Togg…

【Unity】Inspectorに表示されるパラメータをUnityエディタ再生中のみ編集不可能にするPropertyAttribute

概要 using UnityEngine; public class Example : MonoBehaviour { [UnchangeableInPlaying] public int m_id; [UnchangeableInPlaying] public string m_name; } 関連記事

【Unity】Inspectorに表示されるパラメータを編集不可能にするPropertyAttribute

概要 using UnityEngine; public class Example : MonoBehaviour { [Unchangeable] public int m_id; [Unchangeable] public string m_name; } 関連記事

【Unity】スクリプトがコンパイルされた時に呼び出されるコールバック関数を指定できる「DidReloadScripts属性」

using UnityEditor.Callbacks; using UnityEngine; public class Example { [DidReloadScripts] private static void Log() { Debug.Log( "コンパイルされました" ); } } using UnityEditor.Callbacks; using UnityEngine; public class Example { [DidReloa…

【Unity】Unity 4.6 新機能「FormerlySerializedAsAttribute」

Unity 4.6 から 「UnityEngine.Serialization.FormerlySerializedAsAttribute」が追加されました using UnityEngine; public class ExampleClass : MonoBehaviour { public int value; } 例えば上記のクラスをオブジェクトにアタッチして Inspectorでvalue変…

【Unity】「OnOpenAssetAttribute」でUnityプロジェクトからファイルが開かれた時に呼び出されるコールバック関数を実装する

「UnityEditor.Callbacks.OnOpenAssetAttribute」属性をstaticな関数に適用することで UnityプロジェクトのProjectビューからアセットを開く時に その関数が呼び出されるようになります using UnityEditor; using UnityEditor.Callbacks; using UnityEngine;…

【Unity】「PostProcessSceneAttribute」でシーンを遷移する時に呼び出されるコールバック関数を実装する

概要 「UnityEditor.Callbacks.PostProcessSceneAttribute」属性をstaticな関数に適用することで SceneManager.LoadSceneやApplication.LoadLevelでシーンを遷移する時に その関数が呼び出されるようになります using UnityEngine; using UnityEditor.Callba…

【Unity】Unity 5.3 新機能「DelayedAttribute」

Unity 5.3 から「UnityEngine.DelayedAttribute」が追加されました using UnityEngine; public class ExampleClass : MonoBehaviour { public int value; void Update() { Debug.Log( value ); } } 例えば上記のようなクラスをオブジェクトにアタッチして エ…

【Unity】カラーコードを入力して色を設定できるエディタ拡張

概要 ColorHtmlPropertyAttribute.csをプロジェクトに追加して、 ColorHtmlPropertyDrawer.csをプロジェクトのEditorフォルダに追加して、 下記のようなスクリプトを記述することで、 Inspectorでカラーコードを入力して色を設定できるようになります using …

【Unity】Unity 5.0 新機能「RuntimeInitializeOnLoadMethodAttribute」

Unity 5.0 から「RuntimeInitializeOnLoadMethodAttribute」が追加されました この属性をstatic関数に適用することでゲーム起動時にその関数が呼び出されます using UnityEngine; public class ExampleClass { [RuntimeInitializeOnLoadMethod] private stat…

【Unity】Unity 5.1 新機能「UnityEngine.HelpURLAttribute」

Unity 5.1 から「UnityEngine.HelpURLAttribute」が追加されました この属性をMonoBehaviourを継承したクラスに適用することで Inspector上でヘルプアイコンをクリックされた時に表示するサイトを設定できます using UnityEngine; [HelpURL( "http://baba-s.…

【Unity】Unity 5.1 新機能「UnityEngine.ColorUsageAttribute」

Unity 5.1 で「UnityEngine.ColorUsageAttribute」が追加されました この属性をColor型のpublic変数に適用することで カラーピッカーの表示を変えることができます Unity 5.1 以前 using UnityEngine; public class ExampleClass : MonoBehaviour { public C…

【Unity】Unity 5.1 新機能「UnityEngine.CreateAssetMenuAttribute」

Unity 5.1 で「UnityEngine.CreateAssetMenuAttribute」が追加されました この属性をScriptableObjectを継承したクラスに適用することで そのクラスの.assetを「Assets>Create」メニューから作成できるようになります using UnityEngine; [CreateAssetMenu] …