コガネブログ

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

【Unity】Scene ウィンドウに簡単にデバッグ表示できる「Debugging」紹介

はじめに 「Debugging」を Unity プロジェクトに導入することで Scene ウィンドウに簡単にデバッグ表示できるようになります 使用例 using UnityEngine; using Vertx.Debugging; public class Example : MonoBehaviour { private void Update() { DebugUtils…

【Unity】MonoBehaviour の参照を Interface で Inspector に設定できる「Serializable Interface」紹介

はじめに 「Serializable Interface」を Unity プロジェクトに導入することで MonoBehaviour の参照を Interface で Inspector に設定できるようになります 使用例 public interface ICharacter { void Log(); } たとえば ICharacter インタフェースが存在し…

【Unity】フォルダに適用する Preset を簡単に設定できる「Folder Importer Presets」紹介

はじめに 「Folder Importer Presets」を Unity プロジェクトに導入することで フォルダに適用する Preset を簡単に設定できるようになります 使用例 Project ウィンドウで「+ > Nomnom > Folder Importer」を選択して Folder Importer を作成したら Folder …

【Unity】指定したコンポーネントがアタッチされているプレハブを検索できる「Vertx.Editors」紹介

はじめに 「Vertx.Editors」を Unity プロジェクトに導入することで 指定したコンポーネントがアタッチされているプレハブを検索できるようになります 使用例 スクリプトの Inspector で「Search for XXXX」を押すと そのコンポーネントがアタッチされている…

【Unity】Scene ウィンドウで重なっているゲームオブジェクトを簡単に選択できる「NSelection」紹介

はじめに 「NSelection」を Unity プロジェクトに導入することで Scene ウィンドウで重なっているゲームオブジェクトを簡単に選択できるようになります 使用例 Scene ウィンドウで Ctrl + 右クリックすると 重なっているゲームオブジェクトを簡単に選択でき…

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

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

【Unity】中身が同じで重複しているアセットを調査できる「DuplicateAssetDetector.cs」紹介

はじめに https://gist.github.com/yasirkula/f96802da4cf6f5fbb0c76d8322463a88 「DuplicateAssetDetector.cs」を Unity プロジェクトに導入することで 中身が同じで重複しているアセットを調査できるようになります クイックスタート Unity メニューの「Wi…

【Unity】Missing Script やアセットの使用箇所を検索できる「Finder」紹介

はじめに 「Finder」を Unity プロジェクトに導入することで Missing Script やアセットの使用箇所を検索できるようになります クイックスタート Project ウィンドウを右クリックして「Finder」からコマンドを実行できます 「Find Missing Script ~」を選ぶ…

【Unity】チュートリアルなどで特定のボタンのみハイライトして、それ以外のボタンを押せなくすることができる「GuardLayerImage」紹介

はじめに 「GuardLayerImage」を Unity プロジェクトに導入することで チュートリアルなどで特定のボタンのみハイライトして、 それ以外のボタンを押せなくすることができるようになります 使用例 クイックスタート Canvas の前面に表示される位置に空のゲー…

【Unity】Project ビューにファイルごとの Git ステータスを表示したりできる「uVCSBridge」紹介

はじめに 「uVCSBridge」を Unity プロジェクトに導入することで Project ビューにファイルごとの Git ステータスを表示したりできるようになります 使用例 Project ビューにファイルごとの Git ステータスを表示できます TortoiseGit のコマンドを実行する…

【Unity】パラメータを EditorWindow にグラフで表示できる「UnityGraphs」紹介

はじめに 「UnityGraphs」を Unity プロジェクトに導入することで パラメータを EditorWindow にグラフで表示できるようになります 使用例 クイックスタート using UnityEngine; internal sealed class Example : MonoBehaviour { private int m_hp; private…

【Unity】ゲームオブジェクトが持つコンポーネントの private な変数やプロパティの編集や関数の実行ができる「Sidekick Inspection Tools for Unity」紹介

はじめに 「Sidekick Inspection Tools for Unity」を Unity プロジェクトに導入することで ゲームオブジェクトが持つコンポーネントの private な変数やプロパティの編集や 関数の実行ができるようになります 使用例 using UnityEngine; internal sealed cl…

【Unity】Project ウィンドウに Git のステータスを表示できる「GitStatus」紹介

はじめに 「GitStatus」を Unity プロジェクトに導入することで Project ウィンドウに Git のステータスを表示できるようになります 使用例

【Unity】UI でアウトラインや後光を実装できる「UIOutline」紹介

はじめに 「UIOutline」を Unity プロジェクトに導入することで UI でアウトラインや後光を実装できるようになります 使用例 クイックスタート 「UI Outline」コンポーネントをゲームオブジェクトにアタッチして 各種パラメータを設定することで使用できます…

【Unity】ディープリンクで Unity エディタのシーンを開いたりできる「Deeplink – Set up deep links into the Unity editor」紹介

はじめに 「Deeplink – Set up deep links into the Unity editor」を Unity プロジェクトに導入することで ディープリンクで Unity エディタのシーンを開いたりできるようになります 使用例 using Needle.Deeplink; using UnityEditor; using UnityEditor.S…

【Unity】CsprojModifier と BannedApiAnalyzers を使用して、特定の関数が使われていたら警告を表示線してみる

はじめに CsprojModifier と BannedApiAnalyzers を使用することで 特定の関数が使われていたら警告線を表示できるようになります 例えば、プロジェクトにおいてチームメンバーに 重たい Unity の API を使用してほしくない時などに役に立ちます この記事で…

【Unity】エディタ上でのスクリプト関連の操作でなぜ処理に時間がかかっているのか確認できる「Editor Iteration Profiler」紹介

はじめに 現在、「Editor Iteration Profiler」と呼ばれるエディタ用のプロファイラが開発されています 「Editor Iteration Profiler」を Unity プロジェクトに導入することで スクリプトをコンパイルした時になぜ時間がかかっているのか Unity を再生する時…

【Unity】アセンブリのコンパイルのプロセスを可視化できるエディタ拡張「Compilation Visualizer for Unity」紹介

はじめに 「Compilation Visualizer for Unity」は アセンブリのコンパイルのプロセスを可視化できるエディタ拡張です 使用例 プロジェクト全体をコンパイルし直した場合 Assembly-CSharp.dll のスクリプトを修正した場合

【Unity】ContentSizeFitter の FitMode をデフォルトで Preferred Size にする Preset

概要 ContentSizeFitter の FitMode を Preferred Size にした状態で プリセットのメニューを開いて 「Save current to...」ボタンを押して適当なフォルダに保存して 保存した Preset を選択して「Add to ContentSizeFitter default」ボタンを押すと Content…

【Unity】UniTask で処理の開始時と終了時にログを出力できるようにする拡張メソッド

ソースコード 使用例 using UniRx.Async; using UnityEngine; public sealed class Example : MonoBehaviour { private async void Start() { #if ENABLE_RELEASE #else UniTaskExt.OnStartLog += message => Debug.Log( $"{message} 開始" ); UniTaskExt.On…

【ReSharper】Reformat Code 時にステートメント形式のラムダを一行にまとめない方法

概要 上記のように Reformat Code 時にステートメント形式のラムダが 一行にまとめられるのをやめたい場合は 「Place simple anonymous method on single line」をオフにする

【Unity】Git で Clone や Pull した時に AddressableAssetSettings.asset が変更状態になる現象を防ぐエディタ拡張

概要 自分の環境だと Git で Clone や Pull した時に AddressableAssetSettings.asset の改行コードが Win から Unix になってしまっていたので、 エディタ拡張で改行コードを Win にするようにした git の core.autocrlf を使おうかと思ったが、現象が発生…

【Unity】空のゲームオブジェクトのプレハブのサイズは 1KB でデフォルトの Particle System のプレハブのサイズは 113KB

概要 項目 サイズ ファイル行数 空のゲームオブジェクトのプレハブ 1KB 32行 デフォルトの Cube プレハブ 3KB 94行 デフォルトの Particle System のプレハブ 113KB 4755行 ファイルの中身 空のゲームオブジェクトのプレハブ デフォルトの Particle System …

【Unity】エディタ拡張で Windows のメッセージボックスを表示する方法

概要 C:\Windows\Microsoft.NET\Framework64\vX.X フォルダ内の System.Windows.Forms.dll を Unity プロジェクトの Editor フォルダに追加して using System.Windows.Forms; using UnityEngine; public static class Example { [UnityEditor.MenuItem( "Too…

【Unity】ダミーテクスチャを作成するエディタ拡張

概要

【Unity】アセットパスと GUID の変換ができるエディタ拡張

概要

【Unity】ゲームオブジェクトが破棄される時に自動で IDisposable.Dispose を呼び出す拡張メソッド

ソースコード 使用例 using System; using UnityEngine; public class Character : IDisposable { public void Dispose() { Debug.Log( "ピカチュウ" ); } } public class Example : MonoBehaviour { private void Start() { var character = new Character(…

【Unity】ZString の Utf16ValueStringBuilder で ZString.Join を使いやすくする拡張メソッド

ソースコード using Cysharp.Text; using System; using System.Collections.Generic; public static class ZStringExt { public static void AppendLine<T> ( ref this Utf16ValueStringBuilder self, char separator, IEnumerable<T> values ) { self.AppendLine</t></t>…

【Unity】IDisposable の破棄漏れを見つけるクラス

ソースコード Dispose が呼び出されずにインスタンスが破棄されると デストラクタのタイミングでエラーログを出力する 使用例 using UnityEngine; // IDisposable を直接実装するのではなく、 // CheckDisposable を継承するようにする public sealed class …

【Unity】Unity プロジェクトの初回起動時かどうかを確認するクラス

ソースコード 使用例 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { private static readonly EditorFirstBootChecker CHECKER = new EditorFirstBootChecker( "Hoge" ); static Example() { if ( CHECKER.IsFir…