Skip to content

Commit 0873f83

Browse files
committed
add loaded object list
1 parent df926fb commit 0873f83

File tree

3 files changed

+88
-8
lines changed

3 files changed

+88
-8
lines changed

app/Assets/UniDebugMenu/Example/Scripts/ExampleTopListCreator.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,16 @@ public ExampleTopListCreator()
4848
{
4949
m_sourceList = new []
5050
{
51-
new ActionData( "テキスト表示サンプル" , () => OpenAdd( DMType.TEXT_TAB_6 , new TextListCreatorExample() ) ),
52-
new ActionData( "ボタン表示サンプル 2列" , () => OpenAdd( DMType.BUTTON_COL_2 , new TextListCreatorExample() ) ),
53-
new ActionData( "ボタン表示サンプル 3列" , () => OpenAdd( DMType.BUTTON_COL_3 , new TextListCreatorExample() ) ),
54-
new ActionData( "システム情報" , () => OpenAdd( DMType.TEXT_TAB_6 , new SystemInfoListCreator() ) ),
55-
new ActionData( "システムコマンド" , () => OpenAdd( DMType.COMMAND_TAB_6 , new SystemCommandListCreator() ) ),
56-
new ActionData( "ゲームオブジェクト一覧" , () => OpenAdd( DMType.COMMAND_TAB_6 , new GameObjectListCreator() ) ),
57-
new ActionData( "ログ情報" , () => OpenAdd( DMType.TEXT_TAB_6 , m_logDataCreator ) ),
58-
new ActionData( "iOS クラッシュ情報" , () => OpenAdd( DMType.TEXT_TAB_6 , new iOSCrashReportListCreator() ) ),
51+
new ActionData( "テキスト表示サンプル" , () => OpenAdd( DMType.TEXT_TAB_6 , new TextListCreatorExample() ) ),
52+
new ActionData( "ボタン表示サンプル 2列" , () => OpenAdd( DMType.BUTTON_COL_2 , new TextListCreatorExample() ) ),
53+
new ActionData( "ボタン表示サンプル 3列" , () => OpenAdd( DMType.BUTTON_COL_3 , new TextListCreatorExample() ) ),
54+
new ActionData( "システム情報" , () => OpenAdd( DMType.TEXT_TAB_6 , new SystemInfoListCreator() ) ),
55+
new ActionData( "システムコマンド" , () => OpenAdd( DMType.COMMAND_TAB_6 , new SystemCommandListCreator() ) ),
56+
new ActionData( "ゲームオブジェクト一覧" , () => OpenAdd( DMType.COMMAND_TAB_6 , new GameObjectListCreator() ) ),
57+
new ActionData( "ログ情報" , () => OpenAdd( DMType.TEXT_TAB_6 , m_logDataCreator ) ),
58+
new ActionData( "iOS クラッシュ情報" , () => OpenAdd( DMType.TEXT_TAB_6 , new iOSCrashReportListCreator() ) ),
59+
new ActionData( "読み込み済みテクスチャ一覧" , () => OpenAdd( DMType.TEXT_TAB_6 , new LoadedObjectListCreator<Texture>() ) ),
60+
new ActionData( "読み込み済みマテリアル一覧" , () => OpenAdd( DMType.TEXT_TAB_6 , new LoadedObjectListCreator<Material>() ) ),
5961
};
6062
}
6163

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using UnityEngine;
5+
using UnityEngine.Profiling;
6+
7+
namespace UniDebugMenu.Example
8+
{
9+
/// <summary>
10+
/// 読み込み済みの UnityEngine.Object の一覧を表示するクラス
11+
/// </summary>
12+
[Serializable]
13+
public sealed class LoadedObjectListCreator<T> : ListCreatorBase<ActionData> where T : UnityEngine.Object
14+
{
15+
//==============================================================================
16+
// クラス
17+
//==============================================================================
18+
private sealed class LoadedData
19+
{
20+
public readonly long m_size;
21+
public readonly string m_text;
22+
23+
public LoadedData( T obj )
24+
{
25+
m_size = Profiler.GetRuntimeMemorySizeLong( obj );
26+
var memory = ( m_size >> 10 ) / 1024f;
27+
m_text = $"{memory:0.00} MB {obj.name}";
28+
}
29+
}
30+
31+
//==============================================================================
32+
// 変数
33+
//==============================================================================
34+
private IList<ActionData> m_list;
35+
36+
//==============================================================================
37+
// プロパティ
38+
//==============================================================================
39+
public override int Count => m_list.Count;
40+
41+
//==============================================================================
42+
// 関数
43+
//==============================================================================
44+
/// <summary>
45+
/// リストの表示に使用するデータを作成します
46+
/// </summary>
47+
protected override void DoCreate( ListCreateData data )
48+
{
49+
m_list = Resources
50+
.FindObjectsOfTypeAll<T>()
51+
.Where( c => ( c.hideFlags & HideFlags.NotEditable ) == 0 )
52+
.Where( c => ( c.hideFlags & HideFlags.HideAndDontSave ) == 0 )
53+
.Select( c => new LoadedData( c ) )
54+
.Where( c => data.IsMatch( c.m_text ) )
55+
.OrderByDescending( c => c.m_size )
56+
.Select( c => new ActionData( c.m_text ) )
57+
.ToArray()
58+
.ReverseIf( data.IsReverse )
59+
;
60+
}
61+
62+
/// <summary>
63+
/// 指定されたインデックスの要素の表示に使用するデータを返します
64+
/// </summary>
65+
protected override ActionData DoGetElemData( int index ) => m_list.ElementAtOrDefault( index );
66+
}
67+
}

app/Assets/UniDebugMenu/Example/Scripts/LoadedTextureListCreator.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)