コガネブログ

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

2023-04-01から1ヶ月間の記事一覧

【Python】for を並列化する方法

概要 import glob import librosa import soundfile import shutil import sys import os # コマンドライン引数で指定されたディレクトリに存在するすべての .ogg のファイルパスを取得 files = glob.glob(sys.argv[1] + "/*.ogg") for file in files: # .og…

【シェルスクリプト】while を並列化する方法

概要 find . -name "*.wav" -type f -maxdepth 3 | while read -r waveFile do oggFile=${waveFile%.wav}.ogg ffmpeg -nostdin -y -i "${waveFile}" -vn -ac 2 -ar 44100 -ab 128k -acodec libvorbis -f ogg "${oggFile}" done ffmpeg を使用して複数の音声…

【メモ】1 から 100 までの漢数字の行区切り

概要 一 二 三 四 五 六 七 八 九 十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 二十一 二十二 二十三 二十四 二十五 二十六 二十七 二十八 二十九 三十 三十一 三十二 三十三 三十四 三十五 三十六 三十七 三十八 三十九 四十 四十一 四十二 四十…

【メモ】1 から 100 までの数字の行区切り

概要 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 …

【Unity】パラメータ名にハイフンを含む Json を JsonUtility で読み込みたい場合

概要 System.Text.Json などを使用せずに パラメータ名にハイフンを含む Json を JsonUtility で読み込みたい場合 json = json.Replace( "\"time-offset\"", "\"time_offset\"" ); 一応、上記のようにパラメータ名を置換すれば読み込める 参考サイト様

【Rider】⌘ + ⇧ + A でアクションの検索がしたい時にターミナルが起動してしまう場合

概要 システム環境設定の「キーボード > サービス」を選択して 「ターミナルのm...デックスで検索」をオフにする

【Unity】Consider updating External Editor in Unity to Rider 2023.1.

概要 Consider updating External Editor in Unity to Rider 2023.1. JetBrains Rider を 2023.1 にアップデートしたら Unity で上記の警告が出力された Package Manager で「JetBrains Rider Editor」をアップデートしたら出力されなくなった

【Unity】ゲーム画面を背景透過でスクリーンショットできる関数

ソースコード using System.IO; using UnityEngine; namespace Kogane { public static class ScreenCapture { public static void CaptureScreenshot ( string path, Camera camera = null, bool isTransparent = true ) { if ( camera == null ) { camera …

【Unity】Game ビューをフォーカスする処理

概要 var type = typeof( EditorWindow ).Assembly.GetType( "UnityEditor.GameView" ); EditorWindow.FocusWindowIfItsOpen( type );

【Unity】バッチモードでビルドするシェルスクリプトのテンプレートをクリップボードにコピーするスクリプト

ソースコード using UnityEditor; using UnityEngine; namespace Kogane.Internal { internal static class CopyBatchModeScriptTemplateMenuItem { [MenuItem( "Kogane/バッチモードでビルドするシェルスクリプトのテンプレートをコピー" )] private static…

【C#】string.StartsWith や string.EndsWith は引数に StringComparison.Ordinal を指定すると処理が速くなる

検証用スクリプト using System; using System.Diagnostics; using UnityEngine; using Debug = UnityEngine.Debug; public class Example : MonoBehaviour { public int m_count = 1_000_000; private void Start() { const string path = "Assets/Example.…

【Unity】TextId 型の拡張メソッド

ソースコード using TMPro; namespace Kogane { // ReSharper disable once InconsistentNaming public static class TMP_TextTextIdExtensionMethods { public static void SetText ( this TMP_Text self, TextId textId ) { self.text = textId.Value; } p…

【Unity】Graphic 型の拡張メソッド

ソースコード using TMPro; using UnityEngine; using UnityEngine.UI; namespace Kogane { public static class GraphicExtensionMethods { public static void SetColorIfNotNull( this Graphic self, in Color color ) { if ( self == null ) return; sel…

【Unity】Func<UniTask> 型の拡張メソッド

ソースコード using System; using Cysharp.Threading.Tasks; namespace Kogane { public static class FuncUniTaskExtensionMethods { public static async UniTask Call( this Func<UniTask> self ) { if ( self != null ) { await self(); } } } }</unitask>

【Unity】Animator 型の拡張メソッド

ソースコード using System.Collections.Generic; using UnityEngine; namespace Kogane { public static class AnimatorExtensionMethods { public static void Play( this Animator self ) { self.Play( 0 ); } public static void Play( this IReadOnlyLi…

【Unity】Scrmizu で NullReferenceException

概要 NullReferenceException: Object reference not set to an instance of an object Scrmizu.InfiniteScrollBinderBase.Hide () (at Library/PackageCache/com.comcreate-info.scrmizu@db67f77edb/Scripts/Runtime/InfiniteScrollBinderBase.cs:41) Scrmi…

【Unity】Performance warning: There are more than 100 preview scenes.

概要 Performance warning: There are more than 100 preview scenes. There might be code not releasing the preview scene after creating it. UnityEditor.InspectorWindow:RedrawFromNative () PrefabUtility.LoadPrefabContents でプレハブを大量に読…

【Unity】指定したフォルダ内のプレハブを一括で編集するスクリプトのテンプレート

スクリプト using System.Linq; using UnityEditor; using UnityEngine; internal static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { const string directoryName = "Assets/"; var assetPaths = AssetDatabase .GetAllAsset…

【C#】null 許容の SequenceEqual

C#

ソースコード public static bool SequenceEqualAllowedNull<TSource> ( this IEnumerable<TSource> self, IEnumerable<TSource> second ) { return self switch { null when second == null => true, null => false, _ => second != null && self.SequenceEqual( second ) }; } 使用例 </tsource></tsource></tsource>…

【Unity】2 つのコレクションに差集合があれば Test Runner でテスト失敗にするクラス

ソースコード using System.Collections.Generic; using System.Linq; using NUnit.Framework; namespace Kogane { internal static class ExceptTester { public static void Test<T> ( string message, IEnumerable<T> source1, IEnumerable<T> source2 ) { var res</t></t></t>…

【Unity】Audio の DSP Buffer Size を Best latency にした時に Windows の Unity エディタで発生するサウンドの音割れを防ぐエディタ拡張

ソースコード #if UNITY_EDITOR_WIN using UnityEditor; using UnityEngine; namespace Kogane { /// <summary> /// Audio の DSP Buffer Size を Best latency にした時に Windows の Unity エディタで発生するサウンドの音割れを防ぐエディタ拡張 /// </summary> [InitializeO…

【Unity】Firebase Analytics のデバッグモードを有効化・無効化する MenuItem を管理するクラス

ソースコード using System.Diagnostics; using UnityEditor; namespace Kogane { /// <summary> /// Firebase Analytics のデバッグモードを有効化・無効化する MenuItem を管理するクラス /// </summary> internal static class FirebaseAnalyticsMenuItem { //==============…

【Unity】Android のモンキーテストを開始・終了する MenuItem を管理するクラス

ソースコード using System.Diagnostics; using UnityEditor; namespace Kogane { /// <summary> /// Android のモンキーテストを開始・終了する MenuItem を管理するクラス /// </summary> internal static class AndroidMonkeyTestMenuItem { //=============================…

【メモ】正規表現は ChatGPT に考えてもらうと楽

【Rider】Explorer でファイルを選択した状態で Find in Files を開くと検索範囲が自動で「Directory」になる

概要 ファイル検索しても意図した結果にならないので調べてみたところ いつの間にか検索範囲が「Directory」になっていた Explorer でファイルを選択した状態で Find in Files を開くと 検索範囲が自動で「Directory」になり、 次に検索する時は前回選択され…

【Unity】指定したフォルダ内のアセットのファイル名を一括でリネームするエディタ拡張

スクリプト using System; using System.IO; using System.Linq; using UnityEditor; public static class AssetRenamer { public static void Rename ( string directoryName, Func<string, string> onReplace ) { if ( !directoryName.EndsWith( "/" ) ) { directoryName +</string,>…

【Unity】IDragHandler と IPointerMoveHandler の違い

概要 マウスカーソルが対象物の範囲外に移動するとイベントが 項目 内容 IPointerMoveHandler 呼ばれなくなる IDragHandler 呼ばれる

【Unity】#XX pc XXXX libGLES_mali.so (BuildId: xxxx)

概要 Crashed: Thread: SIGSEGV 0x0000000000000018 #00 pc 0x1679eb8 libGLES_mali.so (BuildId: bec4c595930d3102) #01 pc 0x164c33c libGLES_mali.so (BuildId: bec4c595930d3102) #02 pc 0x76b880 libGLES_mali.so (BuildId: bec4c595930d3102) #03 pc 0…

【Unity】#XX pc XXXX vulkan.adreno.so (BuildId: xxxx)

概要 Crashed: Thread: SIGSEGV 0x0000000000000008 #00 pc 0x9f9e0 vulkan.adreno.so (BuildId: a60862ea38912bb349d7bd52158d8d1e) #01 pc 0x65b5a8 libunity.so (BuildId: 865c87ab195e0bea933b151e18821a8a99807213) Android で上記のようなログが出てア…

【Unity】#XX pc XXXX libvulkan.so (BuildId: xxxx)

概要 Crashed: Thread: SIGSEGV 0x0000000000000058 #00 pc 0x1087a libvulkan.so (BuildId: fc680eaf7f09c8ebc443ec23f5e310e1) #01 pc 0x4f1932 libunity.so (BuildId: f3b0f4c78454a5df12133c9afff00d61d8074e13) #02 pc 0x531476 libGLES_mali.so (Build…