コガネブログ

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

2022-09-01から1ヶ月間の記事一覧

【Rider】Vector3 のコード補完から System.Numerics.Vector3 を非表示にする方法

概要 System.Numerics* Auto Import に上記の文字列を追加する

【Unity】ObjectField からドラッグできるようになる「DragAndDropFromField」紹介

はじめに 「DragAndDropFromField」を Unity プロジェクトに導入することで ObjectField からドラッグできるようになります 導入後

【C#】CancellationToken.None == default は True

C#

概要 using System.Threading; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { Debug.Log( CancellationToken.None == default ); // True } }

【C#】TryElementAt 拡張メソッド

C#

ソースコード using System; using System.Collections.Generic; namespace Kogane { // ReSharper disable once InconsistentNaming public static class IEnumerableExtensionMethods { public static bool TryElementAt<TSource> ( this IEnumerable<TSource> source, int i</tsource></tsource>…

【Unity】Unity 再生時に Game ビューをフォーカスするエディタ拡張

ソースコード using System; using UnityEditor; namespace Kogane.Internal { [InitializeOnLoad] internal static class AutoFocusGameViewOnPlayModeStateChanged { private static readonly Type GAME_VIEW_TYPE; static AutoFocusGameViewOnPlayModeSta…

【Unity】Unity 2021 から削除された古いツールバーが使えるようになる「Unity-2021-with-old-toolbar」紹介

はじめに 「Unity-2021-with-old-toolbar」を Unity プロジェクトに導入することで Unity 2021 から削除された古いツールバーが使えるようになります 導入後

【Rider】コード補完から UnityEngine.Windows を非表示にする方法

概要 UnityEngine.Windows* Auto Import に上記の文字列を追加する

【Rider】Directory のコード補完から UnityEngine.Windows.Directory を非表示にする方法

概要 UnityEngine.Windows.Directory Auto Import に上記の文字列を追加する

【Rider】File のコード補完から System.Net.WebRequestMethods.File と UnityEngine.Windows.File を非表示にする方法

概要 System.Net.WebRequestMethods* UnityEngine.Windows.File Auto Import に上記の文字列を追加する

【Rider】Image のコード補完から MG.GIF.Image を非表示にする方法

概要 MG.GIF.Image Auto Import に上記の文字列を追加する

【Rider】Type のコード補完から UnityEngine.ADBannerView と UnityEngine.iOS.ADBannerView を非表示にする方法

概要 Auto Import の一覧に以下の 2 つを追加する UnityEngine.ADBannerView* UnityEngine.iOS.ADBannerView*

【C#】組み込み型の名前を「Int32」ではなく「int」という形式で取得する方法

C#

ソースコード using System; namespace Kogane { public static class TypeUtils { public static string GetCSharpTypeKeyword( Type type ) { return GetCSharpTypeKeyword( type.Name ); } // https://stackoverflow.com/questions/56352299/gettype-retu…

【C#】ジェネリック型の名前を「Dictionary`2」ではなく「Dictionary<int, string>」という形式で取得する方法

C#

ソースコード using System; using System.Linq; namespace Kogane { public static class TypeUtils { // https://stackoverflow.com/questions/1533115/get-generictype-name-in-good-format-using-reflection-on-c-sharp public static string GetPrettyN…

【Rider】XML ドキュメントコメントの summary のみを入力できる Live Template

概要 Rider の Preferences の「Editor > Live Templates > C#」を選択して 「New Template」のアイコンを押して 「Shortcut:」に summaryComment と入力して左のテキストエリアに /// <summary> /// $END$ /// </summary> と入力して保存する 設定

【Unity】Inspector の「Expand All Components」「Collapse All Components」をスクリプトから呼ぶ方法

ソースコード using System; using System.Reflection; using UnityEditor; namespace Kogane.Internal { public static class PropertyEditorInternal { private const BindingFlags BINDING_ATTRS = BindingFlags.Instance | BindingFlags.NonPublic; priv…

【Unity】Sprite にアウトラインを付けられるシェーダ

概要 Before After 重ねた場合 備考 上記のシェーダは以下の公式フォーラムで投稿されていたものになります

【Unity】string.Join を簡単に書けるようにするソーステンプレート

ソースコード #if UNITY_EDITOR using System; using System.Collections.Generic; using JetBrains.Annotations; // ReSharper disable IdentifierTypo // ReSharper disable InconsistentNaming namespace Kogane { [PublicAPI] [Obsolete( "", true )] pu…

【おすすめスライド】「Unity開発でのミスを未然に防ぐRoslynアナライザーのすゝめ【DeNA TechCon 2022】」

スライド

【Unity】Line Renderer にアウトラインを付けられるシェーダ

概要 備考 上記のシェーダは以下の公式フォーラムで投稿されていたものになります

【Unity】Debug.Log をメソッドチェーンで書けるようにする拡張メソッド

ソースコード using UnityEngine; namespace Kogane { public static class DebugLogMethodChainingExtensionMethods { public delegate void LogDelegate( object item ); public static LogDelegate OnLog { get; set; } = item => Debug.Log( item ); pub…

【Unity】Debug.Log を簡単に書けるようにするソーステンプレート

ソースコード #if UNITY_EDITOR using System; using JetBrains.Annotations; // ReSharper disable IdentifierTypo // ReSharper disable InconsistentNaming namespace Kogane { [PublicAPI] [Obsolete( "", true )] public static class SourceTemplateCo…

【C#】文字列が英数字のみで構成されているかどうかを確認する拡張メソッド

C#

ソースコード namespace Kogane { public static class StringExtensionMethods { public static bool IsAlphanumeric( this string self ) { for ( var i = 0; i < self.Length; i++ ) { var x = self[ i ]; if ( !char.IsLetterOrDigit( x ) ) { return fa…

【C#】文字が英数字かどうかを確認する拡張メソッド

C#

ソースコード namespace Kogane { public static class CharExtensionMethods { public static bool IsAlphanumeric( this char self ) { return char.IsLetterOrDigit( self ); } } } 使用例 Debug.Log( '0'.IsAlphanumeric() ); // True Debug.Log( 'A'.Is…

【C#】文字が半角英数字かどうかを判定する方法

C#

概要 var isAlphanumeric = char.IsLetterOrDigit( 'A' ); // True char.IsLetterOrDigit を使うと判定できる 0 ~ 9、A ~ Z、a ~ z は True になる 記号や半角スペースは False になる 使用例 // 0 ~ 9、A ~ Z、a ~ z は True になる var isAlphanumeric = "…

【Unity】MenuItem で Hierarchy の Create メニューを自作する時のお作法

概要 「GameObject」メニューにゲームオブジェクトを作成するメニューを追加する場合、 「GameObjectUtility.SetParentAndAlign」を必ず呼び出し、 親を設定し、子に同じレイヤーと位置を与えます。 また、「Undo.RegisterCreatedObjectUndo」を呼び出して作…

【Unity】Java の Stream API の Peek のような機能を LINQ で使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using JetBrains.Annotations; namespace Kogane { public static class IEnumerablePeekExtensionMethods { public static IEnumerable<T> Peek<T> ( [NotNull] this IEnumerable<T> source, [NotNull</t></t></t>…

【Unity】別の Unity プロジェクトに全パッケージをコピーするバッチファイル

概要 xcopy /e /s /y ^ "【Unity プロジェクト A のパス】\Packages\*" ^ "【Unity プロジェクト B のパス】\Packages"

【Unity】LINQ で抽出した要素をログ出力して確認できるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using JetBrains.Annotations; using UnityEngine; namespace Kogane { public static class IEnumerableLogExtensionMethods { public delegate void LogDelegate( object item ); public st…

【Unity】「Library/PackageCache」フォルダに存在するアセットかどうかを確認する方法

概要 var fullPath = Path.GetFullPath( assetPath ).Replace( "\\", "/" ); var currentDirectory = Directory.GetCurrentDirectory(); var relativePath = Path.GetRelativePath( currentDirectory, fullPath ).Replace( "\\", "/" ); var isPackageCache …

【C#】指定された値をリテラル付きの文字列に変換する関数

C#

概要 private static string ToLiteralString( object value ) { if ( value == null ) return "null"; if ( value is bool boolValue ) return boolValue ? "true" : "false"; if ( value is float floatValue ) return $"{floatValue}f"; if ( value is lo…