コガネブログ

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

【Unity】AssemblyDefinitionAsset の References を簡単に複数選択できるようにするエディタ拡張

リポジトリ 使用例 通常であれば AssemblyDefinitionAsset の References は一つずつ選択する必要がありますが Inspector のヘッダーの「Select References」を押すことで References を簡単に複数選択できるようになります 依存しているパッケージ https://…

【Unity】error: Build input file cannot be found: 'XXXX/YYYY.mm' (in target 'UnityFramework' from project 'Unity-iPhone')

概要 error: Build input file cannot be found: 'XXXX/YYYY.mm' (in target 'UnityFramework' from project 'Unity-iPhone') .mm ファイルの管理フォルダを変更したあとに Unity で iOS ビルドしたら Xcode ビルド時に上記のエラーが発生する現象に遭遇した…

【Unity】Assembly Definition Reference を作成する時のコンパイル回数を抑えられるエディタ拡張

リポジトリ 使い方 Project ウィンドウを右クリックして「Kogane > Create Assembly Definition Reference」を選択して 表示されたウィンドウで Assembly Definition Reference を作成することができます 通常の手順で Assembly Definition Reference を作成…

【Mac】ドックのサイズを固定する方法

概要 defaults write com.apple.dock size-immutable -bool yes && killall Dock ターミナルで上記のコマンドを実行する defaults write com.apple.dock size-immutable -bool no && killall Dock 変更できるように戻したい場合は上記のコマンドを実行する …

【Unity】Assembly Definition を作成する時のコンパイル回数を抑えられるエディタ拡張

リポジトリ 使い方 Project ウィンドウを右クリックして「Kogane > Create Assembly Definition」を選択して 表示されたウィンドウで Assembly Definition を作成することができます 通常の手順で Assembly Definition を作成して設定を変更する場合 Assembl…

【Adobe XD】横スクロールはスペースキーを押しながらドラッグ

【Unity】GUID とアセットの一覧を確認できる EditorWindow

リポジトリ 使用例 Unity メニューの「Window > Kogane > GUID List」を選択すると プロジェクトに含まれているすべてのアセットの GUID を確認できます 検索欄に GUID やアセットのパスを入力して検索することも可能です ダブルクリックすると該当のアセッ…

【Unity】Assertion failed on expression: 'it != m_SendMap.end()'

概要 AcceleratorClientConnectionCallback - disconnected - 192.168.0.6:10080 Assertion failed on expression: 'it != m_SendMap.end()' ================================================================= Native Crash Reporting ==================…

【Fork】Mac の Fork を終了した時にタブを復元する方法

概要 閉じるボタンを押して閉じるとタブの情報が失われる Ctl + Q で終了するとタブの情報が保持される 参考サイト様

【Unity】プレハブモードで FindObjectOfType を使いたい場合

概要 var tilemap = GameObject.FindObjectOfType<Tilemap>(); プレハブモードでは FindObjectOfType を使ってもコンポーネントは見つからない var tilemap = PrefabStageUtility .GetCurrentPrefabStage() .FindComponentOfType<Tilemap>() ; 上記のようなコードを書くとコン</tilemap></tilemap>…

【Unity】Camera.ScreenToWorldPoint で毎回 z に 0 を入れなくて済む拡張メソッド

ソースコード using UnityEngine; namespace Kogane { public static class CameraExtensionMethods { public static Vector2 ScreenToWorldPoint2D ( this Camera self, Vector3 position ) { return self.ScreenToWorldPoint( position ); } public static…

【Unity】AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture だと ScriptableSingleton の最新の情報を取得できなかった

概要 private void OnPreprocessAudio() { var example = Example.instance; } AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture で ScriptableSingleton にアクセスしたところ、初回は正常に値を取得できたが ScriptableSingleton の値を変…

【Unity】Sprite Atlas V2 だと SetPackingSettings や SetTextureSettings が反映されない

概要 [MenuItem( "hoge/hoge" )] private static void Hoge() { var assetPath = "Assets/New Sprite Atlas.spriteatlas"; var spriteAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>( assetPath ); var packingSettings = spriteAtlas.GetPackingSettings(); packin</spriteatlas>…

【Unity】SpriteAtlas V2 を有効にした場合の SpriteAtlas の拡張子は .spriteatlasv2

概要 var list = importedAssets .Where( x => x.EndsWith( ".spriteatlas" ) || x.EndsWith( ".spriteatlasv2" ) ) .ToArray() ; アセットのパスの拡張子で SpriteAtlas かどうかを確認する場合は .spriteatlas だけではなく .spriteatlasv2 も確認する必要…

【Unity】AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture では Application.isBatchMode が true になる

概要 Unity Hub から Unity を起動した状態で [MenuItem( "hoge/hoge" )] private static void Hoge() { Debug.Log( Application.isBatchMode ); // False } Application.isBatchMode にアクセスすると通常は False になるが private void OnPreprocessAudio…

【C#】継承しているすべての基底クラスと実装しているすべてのインターフェイスの Type を返す拡張メソッド

C#

概要 /// <summary> /// 継承しているすべての基底クラスと実装しているすべてのインターフェイスの Type を返します /// </summary> public static IEnumerable<Type> GetParentTypes( this Type self ) { if ( self == null ) yield break; foreach ( var x in self.GetInterfaces()</type>…

【C#】基底クラスを継承しているもしくはインターフェイスを実装している場合 true を返す拡張メソッド

C#

概要 /// <summary> /// 指定された基底クラスを継承しているもしくはインターフェイスを実装している場合 true を返します /// </summary> public static bool IsInherits( this Type self, Type baseOrInterfaceType ) { if ( self == null ) return false; if ( baseOrInterf…

【Unity】LateFixedUpdate の実装例

ソースコード using System.Collections; using UnityEngine; [DisallowMultipleComponent] public sealed class Example : MonoBehaviour { private void OnEnable() { StartCoroutine( nameof( UpdateLateFixedUpdate ) ); } private void OnDisable() { S…

【Unity】エディタの選択履歴を管理できる「Editor History」紹介

はじめに 「Editor History」を Unity プロジェクトに導入することで エディタの選択履歴を管理できるようになります 使用例 エディタ右上のアイコンから選択履歴を確認できます

【Unity】ShowAuxWindow で開いた EditorWindow のタイトルを変更する方法

概要 var window = ScriptableObject.CreateInstance<Example>(); window.titleContent = new GUIContent( "ピカチュウ" ); window.ShowAuxWindow(); titleContent を設定する</example>

【Unity】Slider のドラッグが終了したかどうかを検知する方法

概要 using UnityEngine; using UnityEngine.EventSystems; public sealed class Example : MonoBehaviour, IPointerUpHandler, IEndDragHandler { // マウスクリックやタップが離された時 void IPointerUpHandler.OnPointerUp( PointerEventData eventData …

【Unity】エディタの GUI を上下の中央に表示する方法

概要 using var scope = new EditorGUILayout.VerticalScope(); GUILayout.FlexibleSpace(); if ( GUILayout.Button( icon, EditorStyles.iconButton ) ) { } GUILayout.FlexibleSpace(); EditorGUILayout.VerticalScope と GUILayout.FlexibleSpace を組み…

【Unity】エディタの GUI でリストに要素がドラッグされたかどうかを検知する方法

概要 using var scope = new EditorGUI.ChangeCheckScope(); var oldCount = m_list.Count; m_editor.OnInspectorGUI(); if ( !scope.changed && oldCount == m_list.Count ) return; Debug.Log( "ピカチュウ" ); エディタの GUI でリストに要素がドラッグさ…

【Unity】Duplicate Array Element と Delete Array Element を実行した時は ChangeCheckScope.changed は true にならない

【C#】MethodInfo が拡張メソッドなら true を返す拡張メソッド

C#

ソースコード using System.Reflection; using System.Runtime.CompilerServices; namespace Kogane { public static class MethodInfoExtensionMethods { public static bool IsExtensionMethod( this MethodInfo self ) { return self.IsDefined( typeof( …

【C#】Type が nullable なら true を返す拡張メソッド

C#

ソースコード public static class TypeExtensionMethods { public static bool IsNullable( this Type self ) { return Nullable.GetUnderlyingType( self ) != null; } }

【Jenkins】ビルド日時の環境変数を使用する方法

概要 「Build Timestamp」プラグインをインストールすると %BUILD_TIMESTAMP% BUILD_TIMESTAMP 環境変数が使用できるようになる システムの設定で形式を変更できる

【Jenkins】Homebrew でインストールした Jenkins を起動したりアップデートしたりするコマンド

概要 # LTS のインストール brew install jenkins-lts # 特定のバージョンの LTS のインストール brew install jenkins-lts@YOUR_VERSION # 起動 brew services start jenkins-lts # 再起動 brew services restart jenkins-lts # アップデート brew upgrade …

【Mac】Homebrew インストール直後に「command not found: brew」と表示される場合

はじめに 公式サイトに書かれているとおりに /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 上記のコマンドを実行して Homebrew インストールした後に brew -v Homebrew が使えるかどうか上記のコマン…

【Unity】EditorGUILayout.Popup で「/」を無視する方法

概要 EditorGUILayout.Popup の displayedOptions に渡す文字列に対して .Replace( "/", "\u2215" ) 上記の処理を行えば「/」で階層が深くならなくなる 参考サイト様