コガネブログ

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

【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 { //=============================…

【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…

【Unity】3D Object の TextMesh Pro で中心の位置がズレる場合

概要 Alignment を上記のように設定したら解決した

【Unity】LineRenderer で DOFade を使えるようにする拡張メソッド

ソースコード public static class LineRendererExtensionMethods { public static Tweener DOFade ( this LineRenderer self, float endValue, float duration ) { var startColor = self.startColor; var endColor = self.endColor; return self .DOColor …

【Unity】DOTWEEN ► This Tween has been killed and is now invalid

概要 if ( m_tween != null && m_tween.IsPlaying() ) return; DOTween で上記のようなコードを記述したら DOTWEEN ► This Tween has been killed and is now invalid 上記の警告が発生する現象に遭遇した if ( m_tween != null && m_tween.IsActive() && m_…

【Unity】UI をドラッグする時にクリックした位置を保持しておく方法

概要 using UnityEngine; using UnityEngine.EventSystems; public class Example : MonoBehaviour, IPointerDownHandler, IDragHandler { [SerializeField] private Canvas m_canvas; private Vector3 m_offset; void IPointerDownHandler.OnPointerDown( P…

【Unity】スプライトをドラッグする時にクリックした位置を保持しておく方法

概要 using UnityEngine; using UnityEngine.EventSystems; public class Example : MonoBehaviour, IPointerDownHandler, IDragHandler { private Vector3 m_offset; void IPointerDownHandler.OnPointerDown( PointerEventData eventData ) { var worldPoi…

【Unity】Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.

概要 Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object. at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) at System.…

【Unity】Android 端末で機内モードかどうか確認する方法

概要 using UnityEngine; namespace Kogane { public static class AirplaneModeChecker { public static bool IsAirplaneMode { get { #if UNITY_EDITOR || UNITY_ANDROID if ( Application.isEditor ) return false; using var unityPlayer = new AndroidJ…

【Unity】ProjectSettings.asset のバックアップと復元を行うクラス

リポジトリ 使用例 using System.Linq; using Kogane; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { const BuildTargetGroup buildTargetGroup = BuildTargetGroup.Standa…

【Unity】デバッグ用のシーンを Scenes In Build のリストの末尾に移動するエディタ拡張

リポジトリ 使用例 デバッグ用のシーンが格納されているフォルダのパスを Project Settings で「Path Array」に設定すると Scenes In Build にシーンを追加した時にデバッグ用のシーンが リストの末尾に自動で移動するようになります また、先頭以外のシーン…

【Unity】プレハブモードで開いているプレハブを Project ウィンドウでハイライトするエディタ拡張

リポジトリ 使用例 Project Settings で「Is Enable」をオンにすると プレハブモードで開いているプレハブが Project ウィンドウでハイライトされるようになります

【Unity】SortingLayerEditorUtility クラスの internal な機能にアクセスできる機能

リポジトリ 使用例 using System; using UnityEditor; using UnityEngine; namespace Kogane.Internal { [CustomEditor( typeof( MeshRenderer ) )] internal sealed class MeshRendererInspector : Editor { private Editor m_editor; private SerializedPr…

【Unity】TLS Allocator ALLOC_TEMP_TLS, underlying allocator ALLOC_TEMP_MAIN has unfreed allocations, size 30717

概要 TLS Allocator ALLOC_TEMP_TLS, underlying allocator ALLOC_TEMP_MAIN has unfreed allocations, size 30717 Internal: Stack allocator ALLOC_TEMP_MAIN has unfreed allocations, size 30717 To Debug, run app with -diag-temp-memory-leak-validat…

【Unity】TreeView で検索した時に要素の表示順が変わってしまう場合

概要 protected override bool DoesItemMatchSearch ( TreeViewItem treeViewItem, string search ) { // ... } TreeView の DoesItemMatchSearch をオーバーライドして検索処理を実装した際に、 MultiColumnHeader の sortedColumnIndex が無視されてしまう…

【Unity】ScriptableSingleton の拡張メソッド

リポジトリ 使用例 // protected な Save 関数を public で呼び出せるようにする拡張メソッド scriptableSingleton.Save( true );

【Unity】Animation で SpriteRenderer のスプライトを変更できない場合

概要 Animator を使用する必要がある 参考サイト様

【Unity】FancyGridView に normalizedPosition を実装する方法

概要 private int Rows => ( DataCount - 1 ) / startAxisCellCount + 1; public float NormalizedPosition { get => Mathf.InverseLerp( 0, Rows, Scroller.Position ); set => Scroller.Position = Mathf.Lerp( 0, Rows, value ); } 垂直方向の FancyGridV…

【Unity】FancyGridView で要素の行数を取得する方法

概要 private int Rows => ( DataCount - 1 ) / startAxisCellCount + 1; FancyGridView を継承したクラスで上記のようなコードを記述することで 行数を取得できる

【Unity】FancyScrollRect でスクロール位置をリセットする時に位置がズレる場合

概要 FancyScrollRect のスクロール位置をリセットするために UpdatePosition( 0 ); 上記の処理を呼び出したら、要素の行数によって リセット後のスクロール位置がズレる現象に遭遇した Scroller.Position = 0; 上記の処理に書き換えたらズレることはなくな…

【Unity】FancyScrollRect のスクロールを止める方法

概要 FancyScrollRect のスクロールの速度は Scroller クラスの velocity で管理されているが velocity は private なので外部から操作できない /// <summary> /// 現在のスクロール位置. /// </summary> /// <value></value> public float Position { get => currentPosition; set { autoScrol…

【Unity】Unity エディタのフォントサイズを変更できる「EditorFontSize」紹介

はじめに https://gist.github.com/nukadelic/47474c7e5d4ee5909462e3b900f4cb82 「EditorFontSize」を Unity プロジェクトに導入することで Unity エディタのフォントサイズを変更できるようになります 使用例

【Unity】文字列が変数名に使用できるか確認する方法

概要 using System.CodeDom.Compiler; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var provider = CodeDomProvider.CreateProvider( "C#" ); Debug.Log( provider.IsVa…

【Unity】エディタのツールバーとステータスバーを非表示にできる「Editor-View-Modules」紹介

概要 「Editor-View-Modules」を Unity プロジェクトに導入することで エディタのツールバーとステータスバーを非表示にできるようになります 使い方 Unity メニューの「View > Toolbars」の項目を選択すると エディタのツールバーとステータスバーを非表示…