コガネブログ

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

2019-03-26から1日間の記事一覧

【Unity】Unity プロジェクトに含まれるすべてのマテリアルを取得するエディタ拡張のサンプル

概要 using System.Linq; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var list = AssetDatabase .FindAssets( "t:Material" ) .Select( AssetDatabase.GUIDToAssetPath…

【Unity】Unity プロジェクトに含まれるすべてのプレハブを取得するエディタ拡張のサンプル

概要 using System.Linq; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var list = AssetDatabase .FindAssets( "t:Prefab" ) .Select( AssetDatabase.GUIDToAssetPath )…

【Unity】セーフエリアに合わせて RectTransform のサイズを調整するコンポーネント

ソースコード 使い方 「SafeAreaPanel」を uGUI のオブジェクトにアタッチすることで使用できます 例えば iPhone XR で使用すると、上記のようにセーフエリアに合わせて UI.Image のサイズが自動で調整されます

【Unity】任意のコードの実行時間や GC Alloc を測定して Profiler に表示できる「CustomSampler」

概要 using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { private void Start() { var sampler = CustomSampler.Create( "Pokemon" ); sampler.Begin(); for ( int i = 0; i < 10000; i++ ) { Debug.Log( "あああああ…

【C#】string から一行目だけ取得する拡張メソッド

ソースコード using System; using System.Linq; public static class StringExt { public static string GetFirstLine( this string self ) { var separator = new [] { Environment.NewLine }; return self .Split( separator, StringSplitOptions.None ) …

【Unity】CrashReport の末尾の要素2つは重複している?

概要 var reports = CrashReport.reports .Take( CrashReport.reports.Length - 1 ); 自分の環境下だけの問題かもしれないですが、 CrashReport.reports の末尾の要素2つは重複しているようだったので 上記のコードのように末尾のコードは無視して参照してい…

【Unity】TexturePacker でパッキングしたテクスチャを SpriteRenderer や uGUI の Image で使用する

はじめに TexturePacker でパッキングしたテクスチャは SpriteRenderer や uGUI の Image で使用することができます 検証環境 Unity 2018.3.7f1 TexturePacker 4.12.1 準備 上記サイトから TexturePacker をインストールします また、 「TexturePacker Impor…

【Unity】指定した Unity のオブジェクトやアセットのメモリ使用量を取得できる「Profiler.GetRuntimeMemorySizeLong」

概要 例えば、上記のように3個のテクスチャを描画するシーンを Android にビルドして using System.Linq; using System.Text; using TMPro; using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { public TMP_Text m_tex…

【Unity】Unity が確保したメモリの使用状況(Unity の使用メモリ)を取得するスクリプト

ソースコード 使用例 using System.Text; using TMPro; using UnityEngine; public class Example : MonoBehaviour { public TMP_Text m_text; private readonly UnityMemoryChecker m_unityMemoryChecker = new UnityMemoryChecker(); private void Update(…

【Unity】Managed Memory の使用状況(Mono の使用メモリ)を取得するスクリプト

ソースコード 使用例 using System.Text; using TMPro; using UnityEngine; public class Example : MonoBehaviour { public TMP_Text m_text; private readonly MonoMemoryChecker m_monoMemoryChecker = new MonoMemoryChecker(); private void Update() {…

【Unity】実機で読み込まれているマテリアルの一覧を取得する方法

概要 using System.Linq; using System.Text; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var list = Resources .FindObjectsOfTypeAll<Material>() .Where( c => ( c.hideFlags & HideFlags.NotEditable ) == 0 ) .Where( c </material>…

【Unity】実機で読み込まれているテクスチャの一覧を取得する方法

概要 using System.Linq; using System.Text; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var list = Resources .FindObjectsOfTypeAll<Texture2D>() .Where( c => ( c.hideFlags & HideFlags.NotEditable ) == 0 ) .Where( c </texture2d>…

【おすすめスライド】「【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術」

スライド