@@ -16,14 +16,16 @@ public static void Export()
1616 . Select ( AssetDatabase . GUIDToAssetPath )
1717 . ToArray ( ) ;
1818
19- // 2. 分出選中的文件夾和選中的非文件夾
19+ // 2. 選中文件夾類型
2020 var folderPaths = allSelectedPaths
2121 . Where ( path => AssetDatabase . IsValidFolder ( path ) )
2222 . ToArray ( ) ;
2323
24+ // 3. 選中非文件夾類型
2425 var directAssetPaths = allSelectedPaths
2526 . Where ( path =>
2627 ! AssetDatabase . IsValidFolder ( path ) &&
28+ // 支持文件類型
2729 ( path . EndsWith ( ".cs" ) )
2830 )
2931 . ToArray ( ) ;
@@ -40,31 +42,34 @@ public static void Export()
4042 return ;
4143 }
4244
43- // 3 . 從選中的文件夾裡過濾類型
45+ // 4 . 從選中的文件夾裡過濾類型
4446 var foundInFolders = new List < string > ( ) ;
4547 if ( folderPaths . Length > 0 )
4648 {
47- var guidsInFolders = AssetDatabase . FindAssets ( "t:MonoScript" , folderPaths ) ;
49+ // 支持文件類型
50+ var guidsInFolders = AssetDatabase . FindAssets ( "t:MonoScript t:Script" , folderPaths ) ;
4851 foundInFolders = guidsInFolders
4952 . Select ( AssetDatabase . GUIDToAssetPath )
5053 . ToList ( ) ;
5154 }
5255
53- // 4 . 合併選擇路徑
56+ // 5 . 合併選擇路徑
5457 var targets = foundInFolders
5558 . Concat ( directAssetPaths )
5659 . Distinct ( ) ;
5760
58- // 5 . 處理每一個文件
61+ // 6 . 處理每一個文件
5962 var list = targets
6063 . Select ( path =>
6164 {
6265 string guid = AssetDatabase . AssetPathToGUID ( path ) ;
6366 var ms = AssetDatabase . LoadAssetAtPath < MonoScript > ( path ) ;
6467 var type = ms . GetClass ( ) ;
6568
66- // 過濾不是 MonoBehaviour 的類別
67- if ( type == null || ! typeof ( MonoBehaviour ) . IsAssignableFrom ( type ) )
69+ // 過濾類別
70+ if ( type == null ||
71+ // 如果不是 MonoBehaviour 也不是 ScriptableObject 就過濾掉
72+ ! ( typeof ( MonoBehaviour ) . IsAssignableFrom ( type ) || typeof ( ScriptableObject ) . IsAssignableFrom ( type ) ) )
6873 return null ;
6974
7075 AssetDatabase . TryGetGUIDAndLocalFileIdentifier ( ms , out string assetGuid , out long fileId ) ;
@@ -79,11 +84,11 @@ public static void Export()
7984 . Where ( info => info != null )
8085 . ToArray ( ) ;
8186
82- // 4 . 寫入 JSON
87+ // 7 . 寫入 JSON
8388 var wrapper = new Wrapper { items = list } ;
8489 string json = JsonUtility . ToJson ( wrapper , true ) ;
8590
86- // 5 . 讓使用者在專案內選擇儲存位置和檔名
91+ // 8 . 讓使用者在專案內選擇儲存位置和檔名
8792 string defaultFileName = "mono_source_code_guid_map.json" ;
8893 string savePath = EditorUtility . SaveFilePanelInProject
8994 (
@@ -100,7 +105,7 @@ public static void Export()
100105 return ;
101106 }
102107
103- // 6 . 寫入並更新 AssetDatabase
108+ // 9 . 寫入並更新 AssetDatabase
104109 File . WriteAllText ( savePath , json ) ;
105110 AssetDatabase . Refresh ( ) ;
106111
0 commit comments