コガネブログ

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

2019-01-01から1年間の記事一覧

【Unity】エディタ拡張でイベントの登録前に解除する必要があるのかどうか

はじめに using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.hierarchyWindowItemOnGUI -= OnGUI; // ★ EditorApplication.hierarchyWindowItemOnGUI += OnGUI; } private sta…

【Rider】Windows Defender might be impacting your build performance

はじめに Windows Defender might be impacting your build performance. JetBrains Rider checked the following directories. Rider を起動するとウィンドウ右下に上記の警告が表示されることがあります これは、Windows Defender はパソコンを保護するた…

【Rider】JetBrains Rider の日本語化を解除する方法

はじめに JetBrains Rider は上記ページの手順で日本語化できます この記事では、Rider の日本語化を解除する方法を紹介していきます 手順 Rider メニューの「ヘルプ > カスタム VM オプションの編集...」を選択します すると、コード編集画面が表示されるの…

【ReSharper】Jenkins と ReSharper を使用して静的解析を行う方法

はじめに 「ReSharper Command Line Tools」を使用することで コマンドラインから ReSharper による静的解析を実行できるようになります この記事では、Jenkins から「ReSharper Command Line Tools」を呼び出して 静的解析を行う方法を紹介していきます 目…

【Unity】using static を使用してエディタ拡張の OnGUI の記述を少し楽にする

はじめに この記事は「Unity #3 Advent Calendar 2019」の 12/5 の記事です private void OnGUI() { EditorGUILayout.BeginHorizontal(); if ( GUILayout.Button( "ピカチュウ" ) ) { } if ( GUILayout.RepeatButton( "ライチュウ" ) ) { } EditorGUILayout.…

【C#】配列やリストから重複組合せを取得できる拡張メソッド

はじめに 上記サイト様が、リストから組み合わせを取得できる関数を公開されております こちらを少し修正して、配列やリストから重複組合せを取得できる拡張メソッドを作りました ソースコード using System.Collections.Generic; using System.Linq; public…

【C#】配列やリストから組合せを取得できる拡張メソッド

はじめに 上記サイト様が、リストから組み合わせを取得できる関数を公開されております こちらを少し修正して、配列やリストから組合せを取得できる拡張メソッドを作りました ソースコード using System.Collections.Generic; using System.Linq; public sta…

【Rider】JetBrains Rider を日本語化する方法

はじめに この記事では Windows において JetBrains Rider を日本語化する方法を紹介していきます (Mac や Linux でも同様の手順で日本語化できると思いますが未確認です) 検証環境 Windows 10 JetBrains Rider 2019.2.3 手順 Rider を起動している場合は…

【Unity】mdfind や ripgrep を使用して高速にアセットの依存関係を検索できる「Find References In Project 2」紹介

はじめに 「Find References In Project 2」を Unity プロジェクトに導入することで mdfind や ripgrep を使用して高速にアセットの依存関係を検索できるようになります この記事では Windows 10 における使用方法を紹介していきます 使い方 https://github.…

【Unity】50種類以上のデバイスでゲーム画面がどう表示されるかエディタ上で確認できて、ノッチやセーフエリアの対応もできる「Universal Device Preview」紹介

はじめに この記事は「Unityアセット冬のアドベントカレンダー 2019 Winter」の 12/2 の記事です 「Universal Device Preview」を Unity プロジェクトに導入することで 50種類以上のデバイスでゲーム画面がどう表示されるかエディタ上で確認できて、 ノッチ…

【Unity】Inspector のヘッダ部分をエディタ拡張する方法

概要 using UnityEditor; [InitializeOnLoad] public static class Example { static Example() { Editor.finishedDefaultHeaderGUI += editor => { EditorGUILayout.LabelField( "フシギダネ フシギソウ フシギバナ" ); }; } } Editor.finishedDefaultHeade…

【C#】リフレクションで引数に params が付いているかどうか確認できる拡張メソッド

ソースコード using System; using System.Reflection; public static class ParameterInfoExt { public static bool HasParams( this ParameterInfo param ) { var type = typeof( ParamArrayAttribute ); return param.GetCustomAttributes( type, false )…

【C#】Type 型で組み込み型のエイリアス名を取得できる拡張メソッド

ソースコード using System; public static class TypeExt { public static string GetAliasName( this Type self ) { switch ( self.FullName ) { case "System.Boolean": return "bool"; case "System.Byte": return "byte"; case "System.SByte": return …

【Windows】Windows 10 でタスクバーの一部のアイコンが白紙になってしまった時の対応方法

概要 https://answers.microsoft.com/ja-jp/windows/forum/windows_10-update/windows-10-%E3%82%BB%E3%83%BC%E3%83%95/ccc47051-93ad-4cd2-9dcf-3af4c8fee43b Windows 10 をセーフモードで起動してから 特に何もせずにセーフモードを終了してから 再び通常…

【Unity】Transform からすべての子オブジェクトを取得する方法

概要 using System.Collections.Generic; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var children = new List<Transform>(); foreach ( Transform child in transform ) { children.Add( child ); } } } 上記のようなスクリプ</transform>…

【Visual Studio】Visual Studio を使用せずに NuGet パッケージを入手・展開する方法

はじめに 「NuGet Package Explorer」を使用することで Visual Studio を使用せずに NuGet パッケージを入手・展開することができます NuGet Package Explorer の入手方法 https://github.com/NuGetPackageExplorer/NuGetPackageExplorer/releases 上記のペ…

【Unity】親オブジェクトのみ座標を ( 0, 0, 0 ) にリセットするエディタ拡張

ソースコード 使い方 親オブジェクトの座標が ( 0, 0, 0 ) 以外になってしまっており 子オブジェクトの座標は今のまま変えずに 親オブジェクトのみ座標を ( 0, 0, 0 ) にしたい場合に 親オブジェクトの Transform を右クリックして 「Reset Position Only Pa…

【Unity】草を生やすことができる「A Geometry Grass shader in Unity」紹介

はじめに 「A Geometry Grass shader in Unity」を Unity プロジェクトに導入することで 草を生やすことができます 使用例 使い方 シーンに Plane オブジェクトを作成して 「Unlit_GrassShader」マテリアルを割り当てることで使用できます

【雑記】ブログのカテゴリを階層化しました

はじめに Before After ブログのカテゴリの種類が増えてきて、縦にすごく長くなってしまっていたので カテゴリを階層化して見やすくしました この記事にはカテゴリを階層化した手順を書き残しておきます 手順 基本的には上記サイト様の手順を踏んでおります…

【Unity】Vector2 や Vector3 の ToString では小数部の桁数を指定できる

概要 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var vec = new Vector3( 1.234f, 5.678f, 9.012f ); // (1.2, 5.7, 9.0) Debug.Log( vec.ToString() ); // (1.2340, 5.6780, 9.0120) Debug.Log( vec.ToString( "F4…

【Unity】List.Find の null チェックを少しだけ簡潔に記述できる拡張メソッド

ソースコード using System; using System.Collections.Generic; public static class ListExt { public static bool TryFind<T>( this List<T> self, Predicate<T> match, out T result ) where T : class { result = self.Find( match ); return result != null; } </t></t></t>…

【Unity】GetComponentInParent の null チェックを少しだけ簡潔に記述できる TryGetComponentInParent 拡張メソッド

ソースコード using UnityEngine; public static class ComponentExt { public static bool TryGetComponentInParent<T>( this Component self, out T component ) where T : Component { component = self.GetComponentInParent<T>(); return component != null; </t></t>…

【Unity】GetComponentInChildren の null チェックを少しだけ簡潔に記述できる TryGetComponentInChildren 拡張メソッド

ソースコード using UnityEngine; public static class ComponentExt { public static bool TryGetComponentInChildren<T>( this Component self, out T component ) where T : Component { component = self.GetComponentInChildren<T>(); return component != nu</t></t>…

【Unity】TryGetComponent を Unity 2018 でも使用できるようにする拡張メソッド

ソースコード using UnityEngine; public static class ComponentExt { public static bool TryGetComponent<T>( this Component self, out T component ) where T : Component { component = self.GetComponent<T>(); return component != null; } } public stati</t></t>…

【Unity】TryGetComponent の活用方法

概要 var collider = GetComponent<BoxCollider>(); if ( collider != null ) { Debug.Log( collider ); } GetComponent だとこのように記述する処理を if ( TryGetComponent<BoxCollider>( out var collider ) ) { Debug.Log( collider ); } TryGetComponent を使うとちょっとだけ簡潔</boxcollider></boxcollider>…

【Unity】Shortcut Manager でキー割り当てが変更された時に呼び出されるイベント

概要 Shortcut Manager でキー割り当てが変更された時に using UnityEditor; using UnityEditor.ShortcutManagement; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { ShortcutManager.instance.shortcutBindingCh…

【Unity】non convex な Mesh Collider を綺麗に補間できる「UniColliderInterpolator」紹介

はじめに 「UniColliderInterpolator」を Unity プロジェクトに導入することで non convex な Mesh Collider を綺麗に補間できます 使用例 通常 Mesh Collider の「Convex」をオンにすると このように凹凸の部分に正しく Mesh Collider が適用されません Uni…

【Unity】Shortcut Manager のアクティブなプロファイルが変更された時に呼び出されるイベント

概要 Shortcut Manager のアクティブなプロファイルが変更された時に using UnityEditor; using UnityEditor.ShortcutManagement; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { ShortcutManager.instance.activ…

【Unity】Unity 再生時に Build Settings の先頭に登録されているシーンから開始するようにするエディタ拡張

ソースコード using UnityEditor; using UnityEditor.SceneManagement; [InitializeOnLoad] public static class Example { static Example() { // Build Settings に登録されている // シーンの一覧が変更されたら呼び出される EditorBuildSettings.sceneLi…

【Unity】Hierarchy の描画アイコンや選択可能アイコンが変更された時に呼び出されるイベント

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { SceneVisibilityManager.visibilityChanged += () => Debug.Log( "ピカチュウ" ); SceneVisibilityManager.pickingChanged += () => Debu…