読者です 読者をやめる 読者になる 読者になる

コガネブログ

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

エディタ拡張

【Unity】Hierarchyを一行おきに色を変えて見やすくするエディタ拡張

類似記事 【Unity】Hierarchyにゲームオブジェクトが持つコンポーネントの一覧を表示するエディタ拡張 - コガネブログ 【Unity】Projectビューにアセットの拡張子を表示するエディタ拡張 - コガネブログ 【Unity】Hierarchyにゲームオブジェクトのアイコンを…

【Unity】Hierarchyにゲームオブジェクトが持つコンポーネントの一覧を表示するエディタ拡張

Hierarchy上でコンポーネントのアイコンをクリックすることで コンポーネントが有効かどうかを変更することができます 参考サイト様 ヒエラルキービューにコンポーネントのアイコンを表示する - けいごのなんとか 類似記事 【Unity】Projectビューにアセット…

【Unity】Projectビューにアセットの拡張子を表示するエディタ拡張

類似記事 【Unity】Hierarchyにゲームオブジェクトのアイコンを表示するエディタ拡張 - コガネブログ 【Unity】無効なコンポーネントがアタッチされているかどうかをHierarchyに表示するエディタ拡張 - コガネブログ 【Unity】Hierarchyにゲームオブジェクト…

【Unity】Animator のステート名を定数で管理するクラスを生成するエディタ拡張

上記のスクリプトを Unity プロジェクトの Editor フォルダに追加すると、Unity エディタのメニューに 「Tools>Create>Animator State Name」が追加されます これを選択するとアニメーターのステート名を定数で管理する AnimatorStateName.cs が生成されます…

【Unity】Hierarchyにゲームオブジェクトのアイコンを表示するエディタ拡張

類似記事 【Unity】無効なコンポーネントがアタッチされているかどうかをHierarchyに表示するエディタ拡張 - コガネブログ 【Unity】Hierarchyにゲームオブジェクトを選択できるチェックボックスを表示するエディタ拡張 - コガネブログ 【Unity】Hierarchyに…

【Unity】無効なコンポーネントがアタッチされているかどうかをHierarchyに表示するエディタ拡張

類似記事 【Unity】Hierarchyにゲームオブジェクトを選択できるチェックボックスを表示するエディタ拡張 - コガネブログ 【Unity】Hierarchyにゲームオブジェクトがアクティブかどうかを変更するトグルを表示するエディタ拡張 - コガネブログ 【Unity】Hiera…

【Unity】エディタで表示できるウィンドウの名前を調べる

「Window」メニューからすべてのウィンドウを開く 上記のスクリプトを「Editor」フォルダに保存する メニューの「Tools>Example」を実行する Console に各ウィンドウの名前が出力される ウィンドウ 名前 Scene UnityEditor.SceneView Game UnityEditor.GameV…

【Unity】Hierarchyにゲームオブジェクトを選択できるチェックボックスを表示するエディタ拡張

ゲームオブジェクトを複数選択する時に Ctrl キーを押す必要がなくなります 類似記事 【Unity】Hierarchyにゲームオブジェクトがアクティブかどうかを変更するトグルを表示するエディタ拡張 - コガネブログ 【Unity】Hierarchyにゲームオブジェクトを編集で…

【Unity】Hierarchyにゲームオブジェクトがアクティブかどうかを変更するトグルを表示するエディタ拡張

類似記事 【Unity】Hierarchyにゲームオブジェクトを編集できるかどうかを変更するアイコンを表示するエディタ拡張 - コガネブログ

【Unity】Hierarchyにゲームオブジェクトを編集できるかどうかを変更するアイコンを表示するエディタ拡張

類似記事 【Unity】Hierarchyにゲームオブジェクトがアクティブかどうかを変更するトグルを表示するエディタ拡張 - コガネブログ

【Unity】GUIStyleで使用できる文字列の一覧を表示するエディタ拡張

参考サイト様 Built-in custom editor styles in Unity3D

【Unity】「SceneModeUtility.SearchForType」でHirarchyにフィルターを設定する

using UnityEditor; using UnityEngine; public static class ExampleClass { [MenuItem( "Tools/Example" )] private static void Example() { SceneModeUtility.SearchForType( typeof( Camera ) ); } }

【Unity】「EditorWindow.FocusWindowIfItsOpen」でSceneビューをフォーカスする

using UnityEditor; public static class ExampleClass { [MenuItem( "Tools/Example" )] public static void Example() { EditorWindow.FocusWindowIfItsOpen<SceneView>(); } }</sceneview>

【Unity】エディタ編集中に他のシーンを開いた時に呼び出されるコールバック関数を実装する

using UnityEditor; using UnityEngine; public static class Hoge { [InitializeOnLoadMethod] private static void OnChangedCurrentScene() { EditorApplicationUtils.mChangedCurrentScene = currentScene => { Debug.Log( currentScene ); }; } } 例え…

【Unity】シーンファイルが作成、削除された時に自動でScenes In Buildに追加、削除するエディタ拡張

このスクリプトをUnityプロジェクトの「Edior」フォルダに追加した状態で Unityプロジェクトにシーンファイルが追加、削除されると 自動で「Build Settings...>Scenes In Build」に追加、削除されます シーンファイルを作成したり削除したりするたびに Build…

【Unity】シーンファイル作成してScenes In Buildに追加するエディタ拡張 その2

このスクリプトをUnityプロジェクトの「Edior」フォルダに追加すると 下記の項目がUnityのメニューに追加されます 「Empty Scene」を選択すると空のシーンファイルを、 「Scene」を選択すると「Main Camera」と「Directional Light」が 存在するシーンファイ…

【Unity】シーンファイル作成してScenes In Buildに追加するエディタ拡張

このスクリプトをUnityプロジェクトの「Edior」フォルダに追加すると 下記の項目がメニューに追加されます 「Create Empty Scene」を選択すると空のシーンファイルを、 「Create Scene」を選択すると「Main Camera」と「Directional Light」が 存在するシー…

【Unity】フォルダのInspectorを拡張する

Unity 5以降であれば、フォルダのInspectorを拡張可能です 例えば、上記のスクリプトをUnityプロジェクトの 「Editor」フォルダに追加することで、フォルダのInspectorを 下記のように拡張することが可能です フォルダの容量を見られるようにしたり フォルダ…

【Unity】シーンファイルのInspectorを拡張する

Unity 5以降であれば、シーンファイルのInspectorを拡張可能です 例えば、上記のスクリプトをUnityプロジェクトの 「Editor」フォルダに追加することで、シーンファイルのInspectorを 下記のように拡張することが可能です このサンプルではInspector上からシ…

【Unity】Projectビューにエクスプローラで開くボタンを追加するエディタ拡張

上記のスクリプトを Unity プロジェクトの 「Editor」フォルダに追加していただくことで Project ビューにエクスプローラで開くボタンを追加できます 参考サイト様 OpenInFileBrowser - Unify Community Wiki

【Unity】Inspector で Flags 属性が適用された列挙型の値を設定しやすくする PropertyDrawer その2

using System; using UnityEngine; [Flags] public enum TYPE // タイプ { GRASS = 1 << 0, // くさ FIRE = 1 << 1, // ほのお WATER = 1 << 2, // みず } public class NewBehaviourScript : MonoBehaviour { [EnumFlags] public TYPE Type; public void On…

【Unity】Inspector で Flags 属性が適用された列挙型の値を設定しやすくする PropertyDrawer

using System; using UnityEngine; [Flags] public enum TYPE // タイプ { GRASS = 1 << 0, // くさ FIRE = 1 << 1, // ほのお WATER = 1 << 2, // みず } public class NewBehaviourScript : MonoBehaviour { [EnumFlags] public TYPE Type; public void On…

【おすすめスライド】UnityでのLINQ活用例

LINQでの活用例 from Ryota Murohoshi

【Unity】Scripting Define Symbolsを簡単に設定できるようにするエディタ拡張

UnityエディタでPlayer Settingsを開いてから 「Scripting Define Symbols」に定義したいシンボル名を入力することで #ifディレクティブの条件として使用できるようになりますが 毎回Player Settingsを開いて文字列を入力するのが手間なので 簡単にシンボル…

【Unity】Player Settingsを簡単に開けるようにするエディタ拡張

UnityエディタでPlayer Settingsを開く場合は二通りのやり方があります。 「Build Settings」ウィンドウの「Player Settings...」ボタンを選択する 「Edit>Project Settings>Player」を選択する Player Settingsは頻繁に開くメニューですが、開くまでの手順…

【おすすめスライド】「Unity開発で週イチ呑み会を支える技術」

Unity開発で週イチ呑み会を支える技術 from kazuya noshiro

【Unity】Inspector にヘルプボックスを表示する DecoratorDrawer

上記のように Unity の Inspector ビューにヘルプボックスを表示できる DecoratorDrawerを作成しました 上記の HelpBoxAttribute.cs を Unity プロジェクトに追加して 下記のようなスクリプトを書くことで Inspector ビューにヘルプボックスを表示できるよう…

【Unity】Hierarchy ビューで右クリックされた時に表示されるメニューを独自に実装する

Unity は Hierarchy ビューで右クリックされた時に表示されるメニューをカスタマイズできないですが 独自に作成したメニューを表示させることは可能です 試しに Hierarchy ビューで Ctrl + Shift + クリックされた時に 独自に作成したメニューを表示するスク…

【Unity】EditorApplication.ExecuteMenuItem で Unity エディタのメニューのショートカットを作成する

Unity エディタではメニューから InputManager を開いて入力情報を設定したり Tags & Layers を開いてタグやレイヤーを設定したり PhysicsManager を開いて当たり判定を設定したりできますが このあたりのメニューは普段から頻繁に使うわけではないので 久し…

【Unity】Inspector に指定された関数を実行するボタンを表示する PropertyDrawer

Unity の Inspector ビューにボタンを表示して 指定された関数を実行できるようにする PropertyDrawer を作成しました 上記の ButtonAttribute.cs を Unity プロジェクトに追加して 下記のようなスクリプトを書くことで Inspector に指定された関数を実行す…

【Unity】Unity 4.5 の気になる新機能まとめ

Unity 4.5 で使える気づきにくい機能を紹介したブログ記事 - 強火で進め Unity 4.5 が公開されてから 2 ヶ月ほど経ちましたが 調べてみたら意外と知らない機能が追加されていることがわかったので 気になった新機能をまとめてみました Hierarchy ビューのオ…

【Unity】#defineで定義されているシンボルを一覧で表示するウィンドウをエディタ拡張で実装する

using System; using UnityEditor; using UnityEngine; /// <summary> /// #define で定義されているシンボルを一覧で表示するウィンドウを管理するクラス /// </summary> public sealed class SymbolListWindow : EditorWindow { private Vector2 mScrollPos; // スクロールの…

【Unity】プレハブとインスタンスのヒモ付を解除するエディタ拡張

using System.Linq; using UnityEditor; using UnityEngine; public static class PrefabInstanceDisconnecter { [MenuItem("Tools/Prefab/Disconnect")] public static void Disconnect() { foreach (var n in Selection.gameObjects) { PrefabUtility.Disc…

【Unity】Resourcesフォルダからのプレハブのパスを定数で管理するクラスを生成する拡張機能

類似記事 【Unity】レイヤー名を定数で管理するクラスを生成する拡張機能 【Unity】タグ名を定数で管理するクラスを生成する拡張機能 【Unity】シーン名を定数で管理するクラスを生成する拡張機能 // プレハブを読み込みます Resources.Load<GameObject>("Enemy"); Resou</gameobject>…

【Unity】アセットをunitypackageとしてエクスポートする関数

AssetDatabase.ExportPackage 忘れないように覚書です。

【Unity】UnityエディタのProjectビューでアセットのファイルパスをコピーする機能を追加するエディタ拡張

上記のスクリプトをUnityプロジェクトの「Editor」フォルダの階層に追加していただくことで Projectビューでアセットを右クリックしてファイルパスをコピーする機能を追加できます コマンド名 説明 From Asset Assets フォルダからのパスをコピーします From…

【Unity】テクスチャのファイル名によってフォーマットを自動で変更するクラス

using System.IO; using UnityEditor; using UnityEngine; public sealed class TexturePostprocessor : AssetPostprocessor { private void OnPreprocessTexture() { var importer = assetImporter as TextureImporter; importer.filterMode = FilterMode.B…

【Unity】EditorGUILayout.ObjectFieldの型指定の重複を無くすラッパー関数

mTexture = EditorGUILayout.ObjectField(label, mTexture, typeof(Texture), false) as Texture; mMaterial = EditorGUILayout.ObjectField(label, mMaterial, typeof(Material), false) as Material; Unityのエディタ拡張でEditorGUILayout.ObjectFieldを…

【Unity】Vector2型、Vector3型、Rect型、Bounds型の変数の値をInspectorで設定しやすくする「CompactAttribute」

using UnityEngine; public class MyBehaviourScript : MonoBehaviour { public Vector2 Vector2; public Vector3 Vector3; public Rect Rect; public Bounds Bounds; } 通常、Vector2型やVector3型の変数の値をInspectorで設定する場合、 上記のような表示…

【Unity】正規表現を使用してstring型の値を制限する「RegexAttribute」

「RegexAttribute.cs」をUnityプロジェクトに追加します Unityプロジェクトに「Editor」フォルダが存在しない場合は作成します 「RegexDrawer.cs」をUnityプロジェクトの「Editor」フォルダに追加します 下記のような構文で使用します using UnityEngine; pu…

【Unity】string型の値を複数行で入力する「MultilineAttribute」

using UnityEngine; public class MyBehaviourScript : MonoBehaviour { [Multiline] public string Comment; //[Multiline(10)] public string Comment; }

【Unity】値の入力範囲を制限する「RangeAttribute」

using UnityEngine; public class MyBehaviourScript : MonoBehaviour { [Range(0, 100)] public int Level; }

【Unity】レイヤー名を定数で管理するクラスを生成する拡張機能

類似記事 【Unity】タグ名を定数で管理するクラスを生成する拡張機能 【Unity】シーン名を定数で管理するクラスを生成する拡張機能 // ゲームオブジェクトのレイヤーを変更します gameObject.layer = 8; ゲームオブジェクトのレイヤーを変更してどのカメラに…

【Unity】タグ名を定数で管理するクラスを生成する拡張機能

類似記事 【Unity】シーン名を定数で管理するクラスを生成する拡張機能 // ゲームオブジェクトがキャラクターかどうか if (gameObject.CompareTag("Character")) { // ... } ゲームオブジェクトのタグを判定する場合も文字列指定でタイプセーフではないので …

【Unity】シーン名を定数で管理するクラスを生成する拡張機能

// タイトル画面に遷移します Application.LoadLevel("Title"); Unityでは他のシーンに遷移する時にシーンファイルの名前を指定して遷移しますが このままだとシーンファイルが削除されたりリネームされてもエラーにならず ゲーム実行中に上記のような処理に…

【Unity】PropertyDrawer

http://qiita.com/kyusyukeigo/items/8be4cdef97496a68a39d

【Unity】ファイル名に全角文字が含まれたテクスチャがUnityプロジェクトに追加された時に警告ダイアログを表示

using UnityEditor; using System.IO; /// <summary> /// アセットをインポートする時の処理を記述します /// </summary> public class AssetPreprocessor : AssetPostprocessor { /// <summary> /// テクスチャをインポートする直前に呼び出されます /// </summary> private void OnPreprocessText…