版本 2018.4.6f1
https://github.com/blueberryzzz/ReferenceFinder
https://blog.uwa4d.com/archives/UWALab_UnityTools.html
https://docs.unity.cn/cn/current/ScriptReference/AssetDatabase.GetAssetDependencyHash.html
AssetDatabase.GetAllAssetPaths 几乎是新项目
Assets ProjectSettings/InputManager.asset ProjectSettings/TagManager.asset ProjectSettings/ProjectSettings.asset Library/BuildPlayer.prefs ProjectSettings/AudioManager.asset ProjectSettings/TimeManager.asset ProjectSettings/DynamicsManager.asset ProjectSettings/QualitySettings.asset ProjectSettings/EditorBuildSettings.asset ProjectSettings/EditorSettings.asset ProjectSettings/NavMeshAreas.asset ProjectSettings/Physics2DSettings.asset ProjectSettings/GraphicsSettings.asset ProjectSettings/ClusterInputManager.asset ProjectSettings/UnityConnectSettings.asset ProjectSettings/PresetManager.asset ProjectSettings/VFXManager.asset Packages/com.unity.modules.unityanalytics Packages/com.unity.textmeshpro/Scripts/Editor/TMP_GlyphPropertyDrawer.cs Packages/com.unity.package-manager-ui/Editor/Resources Packages/com.unity.textmeshpro/Editor Resources/Textures/SectionHeader_Light.psd Packages/com.unity.package-manager-ui/Tests/Editor/Services/Packages/PackageBaseTests.cs Packages/com.unity.textmeshpro/Scripts/Runtime/AssemblyInfo.cs.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageOrigin.cs Packages/com.unity.textmeshpro/Editor Resources/Shaders/TMP_Properties.cginc Packages/com.unity.collab-proxy/README.md Packages/com.unity.package-manager-ui/Tests/Editor/Services/Mock/MockAddOperation.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignCapLine_Light.psd Packages/com.unity.package-manager-ui/Editor/Resources/Images/Dark/error.png Packages/com.unity.package-manager-ui/Editor/Sources/UI/Common/LoadingSpinner.cs Packages/com.unity.modules.tilemap Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SelectionCaret.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_EditorResourceManager.cs Packages/com.unity.purchasing/License.md Packages/com.unity.collab-proxy/Editor/Collab/Presenters Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_Dropdown.cs Packages/com.unity.package-manager-ui/Tests/Editor/Services Packages/com.unity.analytics/DataPrivacy/AssemblyInfo.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignBottom.psd D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/Timeline/Runtime/UnityEngine.Timeline.dll Packages/com.unity.modules.vehicles Packages/com.unity.package-manager-ui/Editor/Sources/UI Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageInfo.cs Packages/com.unity.package-manager-ui/Tests/Editor/Services/Mock/MockOperation.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignCapLine.psd Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_ScrollbarEventHandler.cs Packages/com.unity.modules.animation Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageAddFromUrlField.cs Packages/com.unity.modules.terrainphysics/package.json Packages/com.unity.analytics/package.json Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SubMesh_Editor.cs Packages/com.unity.collab-proxy/Editor/Collab/CollabToolbarButton.cs Packages/com.unity.modules.particlesystem Packages/com.unity.package-manager-ui/CHANGELOG.md Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignBaseLine_Light.psd D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/TestRunner/portable/nunit.framework.dll Packages/com.unity.package-manager-ui/Editor/Sources/Services/Interfaces/IRemoveOperation.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SpriteAssetMenu.cs Packages/com.unity.modules.video/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_Text.cs Packages/com.unity.modules.physics/package.json Packages/com.unity.package-manager-ui/Editor/Sources/Services/Upm/UpmSearchOperation.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_Style.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/iOS/libaudiopluginresonanceaudio.a Packages/com.unity.modules.unitywebrequesttexture/package.json Packages/com.unity.textmeshpro/Scripts/Runtime Packages/com.unity.analytics/CHANGELOG.md Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageDetails.cs Packages/com.unity.modules.unitywebrequest/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_CoroutineTween.cs Packages/com.unity.package-manager-ui/LICENSE.md Packages/com.unity.package-manager-ui/Editor/Sources/UI/Common Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageManagerWindow.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/Common/Alert.cs Packages/com.unity.purchasing/Documentation/IAP.md Packages/com.unity.textmeshpro/Scripts/Runtime/TMPro_MeshUtilities.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageManagerToolbar.uxml D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/GUISystem/Standalone/UnityEngine.UI.dll Packages/com.unity.package-manager-ui/Editor/AssemblyInfo.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_Sprite.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/Android/gvr.aar D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/android_arm/libaudiopluginresonanceaudio.so Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs Packages/com.unity.collab-proxy/Editor/Collab/Views/BuildStatusButton.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/UIElementsSchema Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_InputField.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/AchievementUnlockedTests.cs Packages/com.unity.collab-proxy/Editor/Collab/Presenters/CollabHistoryPresenter.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_FontFeaturesCommon.cs Assets/ReferenceFinder-master/ReadmeDoc/Start.png Packages/com.unity.textmeshpro/Scripts/Editor/GlyphMetricsPropertyDrawer.cs Packages/com.unity.ads/UnityEngine.Advertisements.dll Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMetaData.h Packages/com.unity.package-manager-ui/Editor/Sources/Services/Interfaces Packages/com.unity.purchasing/Editor/UnityEditor.Purchasing.dll.mdb D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll Packages/com.unity.textmeshpro Packages/com.unity.package-manager-ui/Editor/Sources/Services/OperationFactory.cs Packages/com.unity.package-manager-ui/Tests/Editor/Services/MockOperationFactory.cs Packages/com.unity.package-manager-ui/Editor/Resources/Images/Light Packages/com.unity.collab-proxy/Editor/Collab/Views/ICollabHistoryItemFactory.cs Packages/com.unity.package-manager-ui/Tests/Editor/Common Assets/ResourceArt/Image.prefab Packages/com.unity.textmeshpro/Scripts/Runtime/TMPro_ExtensionMethods.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Interfaces/IOperationFactory.cs Packages/com.unity.package-manager-ui/Tests/Editor Packages/com.unity.analytics/Tests/Runtime/DataPrivacy Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageStatusBar.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Interfaces/ISearchOperation.cs Packages/com.unity.package-manager-ui/Editor/Resources/Styles/Main_Light.scss D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/Android/unitygvr.aar Packages/com.unity.collab-proxy/Editor/Resources Packages/com.unity.textmeshpro/Editor Resources/Textures/SectionHeader_Dark.psd Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/LevelFailTests.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SpriteAssetEditor.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_StyleAssetMenu.cs Packages/com.unity.modules.jsonserialize Packages/com.unity.purchasing/README.md Packages/com.unity.modules.ui Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneSkipTests.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/Unity.Analytics.StandardEvents.EditorTests.asmdef Packages/com.unity.modules.xr/package.json Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/ScreenVisitTests.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll Packages/com.unity.package-manager-ui/Editor/Resources/Templates Packages/com.unity.textmeshpro/Editor Resources Packages/com.unity.modules.physics2d/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_FontFeatureTable.cs Assets/ReferenceFinder-master/LICENSE Packages/com.unity.textmeshpro/Scripts/Editor/GlyphRectPropertyDrawer.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_FontPlugin.cs Packages/com.unity.textmeshpro/Tests/Runtime/TMP_RuntimeTests.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SubMeshUI.cs Packages/com.unity.analytics/Tests Packages/com.unity.collab-proxy/Editor/Collab/Views/HistoryProgressSpinner.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageGroup.cs Packages/com.unity.modules.ui/package.json D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/Linux64/libaudiopluginresonanceaudio.so Packages/com.unity.package-manager-ui/Editor/Sources/Services/Upm/UpmOperationFactory.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/Networking/Standalone/UnityEngine.Networking.dll Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignCenter_Light.psd Packages/com.unity.package-manager-ui/Tests Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationClickTests.cs Packages/com.unity.textmeshpro/Scripts Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/ItemSpentTests.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Runtime/UnityEngine.SpatialTracking.dll Packages/com.unity.package-manager-ui/Editor/Sources/Services/Upm Assets/ResourceArt Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignMiddle.psd D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll Packages/com.unity.modules.cloth Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageStatusBar.uxml Packages/com.unity.textmeshpro/Scripts/Runtime/TMPro_EventManager.cs Packages/com.unity.textmeshpro/Scripts/Runtime/MaterialReferenceManager.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/IAPTransactionTests.cs Packages/com.unity.modules.unitywebrequest Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework Packages/com.unity.textmeshpro/Scripts/Editor/TMP_GlyphPairAdjustmentRecordPropertyDrawer.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/Alert.uxml Assets/ReferenceFinder-master/Editor Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsExtended.h Packages/com.unity.purchasing/package.json Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/StoreItemClickTests.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageFilter.cs Packages/com.unity.purchasing/Documentation Packages/com.unity.purchasing/UnityEngine.Purchasing.dll.mdb D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll Packages/com.unity.analytics/DataPrivacy/DataPrivacy.cs Packages/com.unity.analytics/Unity.Analytics.Tracker.dll Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageItem.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/OSXIntel64/audiopluginresonanceaudio.bundle Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_UpdateRegistery.cs Packages/com.unity.collab-proxy/Editor/Collab/Views Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageCollection.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareAcceptTests.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/PostAdActionTests.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignTop.psd Packages/com.unity.package-manager-ui/Editor/Resources/Images/Dark/loading.png Packages/com.unity.textmeshpro/Editor Resources/Textures Packages/com.unity.textmeshpro/Editor Resources/Shaders/TMP_SDF Internal SSD.shader Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/LevelQuitTests.cs Assets/ReferenceFinder-master/Editor/ReferenceFinderWindow.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageGroup.uxml Packages/com.unity.textmeshpro/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SpriteAsset.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/FirstInteractionTests.cs Packages/com.unity.analytics/Tests/Runtime Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageSearchFilter.cs Assets/Scenes Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_MeshInfo.cs Packages/com.unity.textmeshpro/Scripts/Editor/GlyphInfoDrawer.cs Packages/com.unity.analytics/DataPrivacy/DataPrivacyButton.prefab Packages/com.unity.textmeshpro/PackageConversionData_Assets.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_CharacterInfo.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/Win/audiopluginresonanceaudio.dll Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents Packages/com.unity.analytics/Tests/Editor Packages/com.unity.ads/Editor/Resources/Editor Packages/com.unity.package-manager-ui/Editor/Resources/Images/Light/loading.png Packages/com.unity.textmeshpro/Scripts/Editor/TMP_FontAsset_CreationMenu.cs Assets/ReferenceFinder-master/README.md Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/LevelStartTests.cs Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Info.plist Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageAddFromUrlField.uxml Packages/com.unity.package-manager-ui/Editor/Resources/Images/Dark Packages/com.unity.package-manager-ui/Editor Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignFlush.psd Packages/com.unity.package-manager-ui/Tests/Editor/Services/Mock/MockListOperation.cs Packages/com.unity.package-manager-ui/Editor/Resources/Styles/Main_Dark.scss Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageList.cs Assets/ReferenceFinder-master Packages/com.unity.textmeshpro/PackageConversionData.json Packages/com.unity.modules.audio/package.json Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SpriteCharacterPropertyDrawer.cs Packages/com.unity.collab-proxy/package.json Packages/com.unity.package-manager-ui/Editor/Sources/Services/Interfaces/IAddOperation.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/AdCompleteTests.cs Packages/com.unity.modules.imageconversion/package.json Packages/com.unity.ads/Editor/Resources/Editor/landscape.jpg Packages/com.unity.analytics/Unity.Analytics.StandardEvents.dll Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageJsonHelper.cs Packages/com.unity.modules.video Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Modules/module.modulemap Packages/com.unity.collab-proxy/Editor/Resources/Styles/CollabHistoryLight.uss Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/StoreOpenedTests.cs Packages/com.unity.textmeshpro/LICENSE.md Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_ContextMenus.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_BaseShaderGUI.cs Packages/com.unity.textmeshpro/Package Resources/TMP Examples & Extras.unitypackage Packages/com.unity.modules.vr Packages/com.unity.modules.assetbundle/package.json Packages/com.unity.modules.tilemap/package.json Packages/com.unity.textmeshpro/Scripts/Editor/Unity.TextMeshPro.Editor.asmdef Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignCenter.psd Packages/com.unity.collab-proxy/Editor Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_Asset.cs Packages/com.unity.package-manager-ui/Editor/Resources/Styles/_common.scss Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/UserSignupTests.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_Character.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/ItemAcquiredTests.cs Packages/com.unity.collab-proxy/Editor/Collab/CollabHistoryWindow.cs Packages/com.unity.ads/UnityEngine.Advertisements.dll.mdb Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SpriteGlyphPropertyDrawer.cs Packages/com.unity.package-manager-ui/Tests/Editor/UI Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignFlush_Light.psd Packages/com.unity.collab-proxy/DEPENDENCIES.md Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/AdSkipTests.cs Packages/com.unity.collab-proxy/CHANGELOG.md Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_ObjectPool.cs Assets/ReferenceFinder-master/ReadmeDoc/SingleSearch.png D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_ShaderUtilities.cs Packages/com.unity.analytics/Tests/Runtime/DataPrivacy/JsonSerialization.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageManagerToolbar.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_InputFieldEditor.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageItem.uxml Packages/com.unity.purchasing/UnityEngine.Purchasing.dll Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd Packages/com.unity.modules.unitywebrequestaudio/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_ListPool.cs Packages/com.unity.modules.director Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_RichTextTagStack.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_EditorUtility.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SpriteGlyph.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_ColorGradientAssetMenu.cs Packages/com.unity.ads Packages/com.unity.analytics Packages/com.unity.analytics/Unity.Analytics.Editor.dll Packages/com.unity.modules.screencapture/package.json Packages/com.unity.collab-proxy/Editor/Collab/Views/CollabHistoryDropDownItem.cs Packages/com.unity.package-manager-ui/Tests/Editor/UI/PackageManagerWindowTests.cs Packages/com.unity.package-manager-ui/Tests/Editor/Unity.PackageManagerUI.EditorTests.asmdef Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_TextUtilities.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_ProjectTextSettings.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/TutorialSkipTests.cs Packages/com.unity.modules.unitywebrequestaudio Packages/com.unity.modules.terrain Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SpriteAnimator.cs Packages/com.unity.package-manager-ui/package.json Packages/com.unity.package-manager-ui/Editor/Resources/Images/Light/download.png Packages/com.unity.textmeshpro/Editor Resources/Gizmos/TMP - Input Field Icon.psd Packages/com.unity.textmeshpro/Tests/Runtime/Unity.TextMeshPro.Tests.asmdef Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_RichTextTagsCommon.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_TextAlignmentDrawer.cs Packages/com.unity.package-manager-ui/Editor/Unity.PackageManagerUI.Editor.asmdef Packages/com.unity.ads/Editor/Resources/iOS/builds Packages/com.unity.collab-proxy/Editor/Resources/Styles Packages/com.unity.textmeshpro/CHANGELOG.md Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageDetails.uxml Packages/com.unity.modules.screencapture Packages/com.unity.textmeshpro/Tests/Editor/Unity.TextMeshPro.Editor.Tests.asmdef Packages/com.unity.ads/Editor/Resources/Android Packages/com.unity.textmeshpro/Editor Resources/Gizmos/TMP - Font Asset Icon.psd Packages/com.unity.collab-proxy/Editor/Collab Packages/com.unity.package-manager-ui/Third Party Notices.md Packages/com.unity.textmeshpro/Scripts/Editor/TMP_DropdownEditor.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageError.cs Packages/com.unity.package-manager-ui/Editor/Sources/External/SemVersionExtension.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignTop_Light.psd Packages/com.unity.ads/Editor/Resources/iOS Packages/com.unity.package-manager-ui/Editor/Sources/Services Packages/com.unity.package-manager-ui/Tests/Editor/Services/Packages/PackageSearchTests.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_BaseEditorPanel.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TextContainer.cs Packages/com.unity.textmeshpro/Tests/Editor/TMP_EditorTests.cs Packages/com.unity.ads/Editor Packages/com.unity.package-manager-ui/Tests/Editor/Common/PackageSets.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignLeft_Light.psd Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignMidLine.psd Assets/ResourceArt/Activity_bg_mask.png Packages/com.unity.modules.xr Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_TexturePostProcessor.cs Packages/com.unity.collab-proxy/Editor/Resources/Styles/CollabHistoryCommon.uss Packages/com.unity.collab-proxy/Editor/Unity.CollabProxy.Editor.asmdef Packages/com.unity.modules.imgui/package.json Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_FontAssetCreatorWindow.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/TutorialCompleteTests.cs Packages/com.unity.modules.unitywebrequestassetbundle/package.json Packages/com.unity.collab-proxy/Tests/Editor/HistoryTests.cs Packages/com.unity.package-manager-ui/Editor/Sources/External Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_FontAssetUtilities.cs Packages/com.unity.purchasing/Editor/UnityEditor.Purchasing.dll Packages/com.unity.analytics/License.md Packages/com.unity.collab-proxy/Tests/Editor Packages/com.unity.purchasing D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSJsonStorage.h Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_DefaultControls.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_MeshRendererEditor.cs Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Modules Packages/com.unity.textmeshpro/Scripts/Editor/TMP_BitmapShaderGUI.cs Packages/com.unity.package-manager-ui/Tests/Editor/Services/Packages Packages/com.unity.package-manager-ui/Editor/Sources/Services/Interfaces/IBaseOperation.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_StyleSheetEditor.cs Packages/com.unity.analytics/Editor/AnalyticsEventTracker icon.png Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignMiddle_Light.psd Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/UnityAds Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignMidline_Light.psd Packages/com.unity.modules.wind Packages/com.unity.analytics/DataPrivacy/DataPrivacyIcon.png Packages/com.unity.analytics/Tests/Runtime/DataPrivacy/Unity.Analytics.DataPrivacy.Tests.asmdef Packages/com.unity.modules.unitywebrequestwww Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_FontAssetCommon.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/Common/UIUtils.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignJustified_Light.psd Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_PackageResourceImporter.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageManagerExtensions.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/LevelSkipTests.cs Packages/com.unity.collab-proxy/LICENSE.md Packages/com.unity.modules.ai/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_FontAsset.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_UiEditorPanel.cs Packages/com.unity.ads/License.md Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_Settings.cs Packages/com.unity.collab-proxy/Editor/Resources/Styles/CollabHistoryDark.uss Packages/com.unity.package-manager-ui/Editor/Sources/External/SemVersion.cs Packages/com.unity.modules.vehicles/package.json Packages/com.unity.textmeshpro/Tests/Runtime Packages/com.unity.purchasing/CHANGELOG.md Packages/com.unity.package-manager-ui/README.md Packages/com.unity.textmeshpro/Editor Resources/Gizmos/TMP - Dropdown Icon.psd Packages/com.unity.collab-proxy/Editor/Collab/Views/CollabHistoryRevisionLine.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStartTests.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMPro_Private.cs Packages/com.unity.package-manager-ui/Tests/Editor/Services/Mock/MockRemoveOperation.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/AnalyticsEventTests.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignRight.psd Packages/com.unity.package-manager-ui/Editor/Sources Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationEnableTests.cs Packages/com.unity.collab-proxy/Editor/AssemblyInfo.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/UIElementsSchema/UnityEditor.PackageManager.UI.xsd D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll Packages/com.unity.package-manager-ui/Tests/Editor/Services/Packages/PackageTests.cs Packages/com.unity.analytics/Unity.Analytics.Editor.dll.mdb Packages/com.unity.package-manager-ui/Tests/Editor/UI/PackageDetailsTests.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageState.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/GameOverTests.cs Packages/com.unity.textmeshpro/Tests/Editor D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll Packages/com.unity.package-manager-ui/Tests/Editor/Common/UITests.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignCenterGeo.psd Packages/com.unity.modules.physics2d Packages/com.unity.ads/Editor/UnityEditor.Advertisements.dll.mdb Packages/com.unity.package-manager-ui/Editor/Sources/Services/Upm/UpmAddOperation.cs Packages/com.unity.modules.umbra/package.json Packages/com.unity.modules.particlesystem/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMPro_UGUI_Private.cs Packages/com.unity.collab-proxy Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStepTests.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageGroupOrigins.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Runtime/UnityEngine.GoogleAudioSpatializer.dll Packages/com.unity.package-manager-ui/Editor/Resources/Templates/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd Packages/com.unity.package-manager-ui/Editor/Resources/Styles/Main_Light.uss Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignRight_Light.psd Packages/com.unity.package-manager-ui/Editor/Resources/Templates/UIElementsSchema/UIElements.xsd D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/android_arm64/libaudiopluginresonanceaudio.so Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageListExtensions.cs Packages/com.unity.collab-proxy/Editor/Collab/Views/StatusView.cs Packages/com.unity.collab-proxy/Editor/Collab/Views/CollabHistoryDropDown.cs Packages/com.unity.modules.imgui Packages/com.unity.modules.uielements Packages/com.unity.modules.animation/package.json Packages/com.unity.modules.ai Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/LevelCompleteTests.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll Packages/com.unity.collab-proxy/Editor/Collab/Views/PagedListView.cs Packages/com.unity.package-manager-ui/Tests/Editor/Services/Packages/PackageInfoTests.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignBaseLine.psd Assets/ReferenceFinder-master/ReadmeDoc Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignBottom_Light.psd Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_TextParsingUtilities.cs Packages/com.unity.modules.audio Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_UpdateManager.cs Packages/com.unity.package-manager-ui/Tests/Editor/Services/Mock/MockSearchOperation.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Common/Resources.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd Packages/com.unity.package-manager-ui/Editor/Resources/Styles/Main_Dark.uss Packages/com.unity.textmeshpro/Scripts/Runtime/TextMeshProUGUI.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SettingsEditor.cs Packages/com.unity.textmeshpro/Editor Resources/Gizmos Packages/com.unity.textmeshpro/Scripts/Editor/DropdownOptionListDrawer.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_TextElement_Legacy.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Interfaces/IListOperation.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_TextContainerEditor.cs Packages/com.unity.collab-proxy/Editor/Collab/CollabAnalytics.cs Packages/com.unity.analytics/DataPrivacy/DataPrivacyButton.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Common/OperationSignal.cs Assets/Scenes/SampleScene.unity Packages/com.unity.ads/Editor/Resources/Android/builds/unity-ads.aar D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/Win64/audiopluginresonanceaudio.dll Packages/com.unity.ads/CHANGELOG.md Packages/com.unity.textmeshpro/Scripts/Editor/TMP_CharacterPropertyDrawer.cs Packages/com.unity.collab-proxy/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef Packages/com.unity.package-manager-ui/Tests/Editor/Services/Packages/PackageCollectionTests.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Upm/UpmListOperation.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignLeft.psd Packages/com.unity.modules.assetbundle Packages/com.unity.textmeshpro/Package Resources/TMP Essential Resources.unitypackage Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_SortingLayerHelper.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Upm/UpmRemoveOperation.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageTag.cs Packages/com.unity.package-manager-ui/Tests/Editor/AssemblyInfo.cs Packages/com.unity.modules.wind/package.json Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneStartTests.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageSearchToolbar.uxml Packages/com.unity.modules.cloth/package.json Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_MaterialManager.cs Packages/com.unity.package-manager-ui/Editor/Resources/Images/Light/error.png Packages/com.unity.modules.unitywebrequesttexture Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsUnityDelegate.h Packages/com.unity.textmeshpro/Tests Packages/com.unity.package-manager-ui/Editor/Sources/Services/Common/ApplicationUtil.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_ResourcesLoader.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_UIStyleManager.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageSearchToolbar.cs Packages/com.unity.modules.jsonserialize/package.json Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/LevelUpTests.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/ChatMessageSentTests.cs Packages/com.unity.ads/Editor/UnityEditor.Advertisements.dll Packages/com.unity.textmeshpro/Scripts/Editor/TMP_ColorGradientEditor.cs Packages/com.unity.collab-proxy/Tests Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_InputValidator.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Upm/UpmBaseOperation.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Common D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h Packages/com.unity.package-manager-ui/Editor/Sources/Services/Common/ThreadedDelay.cs Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SpriteAssetImporter.cs Packages/com.unity.textmeshpro/Package Resources Packages/com.unity.textmeshpro/Scripts/Editor/TMP_EditorCoroutine.cs Packages/com.unity.textmeshpro/Editor Resources/Gizmos/TMP - Sprite Asset Icon.psd Packages/com.unity.textmeshpro/Scripts/Editor/TMP_EditorPanel.cs Packages/com.unity.package-manager-ui/Editor/Resources/Images/Dark/download.png Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages Packages/com.unity.purchasing/Editor Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMediationMetaData.h Packages/com.unity.analytics/Unity.Analytics.Tracker.dll.mdb Packages/com.unity.textmeshpro/Scripts/Editor/TMP_FontAssetEditor.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SpriteCharacter.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageList.uxml Packages/com.unity.modules.unityanalytics/package.json Packages/com.unity.modules.unitywebrequestassetbundle Packages/com.unity.ads/README.md Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_StyleSheet.cs D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll Packages/com.unity.package-manager-ui/Editor/Resources/Styles Packages/com.unity.package-manager-ui/Editor/Sources/UI/Interfaces Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs Packages/com.unity.textmeshpro/Scripts/Runtime/FastAction.cs Packages/com.unity.ads/Editor/Resources/Android/builds Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSPlayerMetaData.h Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SDFShaderGUI.cs Packages/com.unity.analytics/README.md Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SubMeshUI_Editor.cs Packages/com.unity.collab-proxy/Editor/Collab/Bootstrap.cs Packages/com.unity.collab-proxy/Editor/Collab/Views/CollabHistoryItemFactory.cs Packages/com.unity.collab-proxy/Editor/Collab/CollabToolbarWindow.cs Packages/com.unity.package-manager-ui/Editor/Sources/Services/Packages/Package.cs Packages/com.unity.modules.unitywebrequestwww/package.json Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/AdOfferTests.cs Packages/com.unity.package-manager-ui/Editor/Resources/Templates/PackageManagerWindow.uxml Packages/com.unity.textmeshpro/Scripts/Editor/TMP_PackageUtilities.cs Packages/com.unity.collab-proxy/Editor/Collab/Views/CollabHistoryItem.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TextMeshPro.cs Packages/com.unity.ads/Editor/Resources Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_ColorGradient.cs Packages/com.unity.ads/package.json Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/AchievementStepTests.cs Packages/com.unity.analytics/Editor Packages/com.unity.textmeshpro/Scripts/Editor Packages/com.unity.textmeshpro/Scripts/Runtime/Unity.TextMeshPro.asmdef D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageManagerPrefs.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/Common/VersionItem.cs Packages/com.unity.analytics/DataPrivacy/Unity.Analytics.DataPrivacy.asmdef Packages/com.unity.package-manager-ui Packages/com.unity.ads/Editor/Resources/Editor/portrait.jpg Packages/com.unity.package-manager-ui/Editor/Resources/Images Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SpriteAssetImportFormats.cs Packages/com.unity.modules.terrainphysics Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/AdStartTests.cs Packages/com.unity.modules.imageconversion Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_TextElement.cs Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/GameStartTests.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_SubMesh.cs Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers Packages/com.unity.textmeshpro/Scripts/Editor/TMP_SerializedPropertyHolder.cs Assets/ReferenceFinder-master/Editor/AssetTreeView.cs Packages/com.unity.textmeshpro/Editor Resources/Gizmos/TMP - Text Component Icon.psd Packages/com.unity.analytics/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareTests.cs Packages/com.unity.analytics/Unity.Analytics.StandardEvents.dll.mdb Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_TextInfo.cs Packages/com.unity.modules.terrain/package.json Packages/com.unity.ads/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAds.h Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_EditorShaderUtilities.cs Packages/com.unity.textmeshpro/Editor Resources/Shaders Packages/com.unity.modules.director/package.json Packages/com.unity.analytics/DataPrivacy Packages/com.unity.textmeshpro/Scripts/Editor/TMPro_CreateObjectMenu.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/Interfaces/IPackageManagerExtension.cs Packages/com.unity.textmeshpro/Scripts/Runtime/TMP_LineInfo.cs Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignJustified.psd Packages/com.unity.modules.umbra Packages/com.unity.package-manager-ui/Tests/Editor/Services/Mock Assets/ReferenceFinder-master/Editor/ReferenceFinderData.cs Packages/com.unity.package-manager-ui/Editor/Sources/UI/Common/PopupField.cs Packages/com.unity.modules.uielements/package.json Packages/com.unity.textmeshpro/Scripts/Editor/TMP_PostBuildProcessHandler.cs Packages/com.unity.modules.physics D:/Unity/2018.4.6f1/Editor/Data/UnityExtensions/Unity/VR/Android/libprotobuf-java-nano.jar Packages/com.unity.package-manager-ui/Editor/Sources/UI/PackageFiltering.cs Packages/com.unity.modules.vr/package.json Assets/ReferenceFinder-master/ReadmeDoc/BatchSearch.png
using UnityEngine; using UnityEditor; using UnityEditor.IMGUI.Controls; //带数据的TreeViewItem public class AssetViewItem : TreeViewItem { public ReferenceFinderData.AssetDescription data; } //资源引用树 public class AssetTreeView : TreeView { //图标宽度 const float kIconWidth = 18f; //列表高度 const float kRowHeights = 20f; public AssetViewItem assetRoot; private GUIStyle stateGUIStyle = new GUIStyle { richText = true, alignment = TextAnchor.MiddleCenter }; //列信息 enum MyColumns { Name, Path, State, } public AssetTreeView(TreeViewState state,MultiColumnHeader multicolumnHeader):base(state,multicolumnHeader) { rowHeight = kRowHeights; columnIndexForTreeFoldouts = 0; showAlternatingRowBackgrounds = true; showBorder = false; customFoldoutYOffset = (kRowHeights - EditorGUIUtility.singleLineHeight) * 0.5f; // center foldout in the row since we also center content. See RowGUI extraSpaceBeforeIconAndLabel = kIconWidth; } //响应右击事件 protected override void ContextClickedItem(int id) { SetExpanded(id, !IsExpanded(id)); } //响应双击事件 protected override void DoubleClickedItem(int id) { var item = (AssetViewItem)FindItem(id, rootItem); //在ProjectWindow中高亮双击资源 if (item != null) { var assetObject = AssetDatabase.LoadAssetAtPath(item.data.path, typeof(UnityEngine.Object)); EditorUtility.FocusProjectWindow(); Selection.activeObject = assetObject; EditorGUIUtility.PingObject(assetObject); } } //生成ColumnHeader public static MultiColumnHeaderState CreateDefaultMultiColumnHeaderState(float treeViewWidth) { var columns = new[] { //图标+名称 new MultiColumnHeaderState.Column { headerContent = new GUIContent("Name"), headerTextAlignment = TextAlignment.Center, sortedAscending = false, width = 200, minWidth = 60, autoResize = false, allowToggleVisibility = false, canSort = false }, //路径 new MultiColumnHeaderState.Column { headerContent = new GUIContent("Path"), headerTextAlignment = TextAlignment.Center, sortedAscending = false, width = 360, minWidth = 60, autoResize = false, allowToggleVisibility = false, canSort = false }, //状态 new MultiColumnHeaderState.Column { headerContent = new GUIContent("State"), headerTextAlignment = TextAlignment.Center, sortedAscending = false, width = 60, minWidth = 60, autoResize = false, allowToggleVisibility = true, canSort = false }, }; var state = new MultiColumnHeaderState(columns); return state; } protected override TreeViewItem BuildRoot() { return assetRoot; } protected override void RowGUI(RowGUIArgs args) { var item = (AssetViewItem)args.item; for(int i = 0; i < args.GetNumVisibleColumns(); ++i) { CellGUI(args.GetCellRect(i), item, (MyColumns)args.GetColumn(i), ref args); } } //绘制列表中的每项内容 void CellGUI(Rect cellRect,AssetViewItem item,MyColumns column, ref RowGUIArgs args) { CenterRectUsingSingleLineHeight(ref cellRect); switch (column) { case MyColumns.Name: { var iconRect = cellRect; iconRect.x += GetContentIndent(item); iconRect.width = kIconWidth; if (iconRect.x < cellRect.xMax) { var icon = GetIcon(item.data.path); if(icon != null) GUI.DrawTexture(iconRect, icon, ScaleMode.ScaleToFit); } args.rowRect = cellRect; base.RowGUI(args); } break; case MyColumns.Path: { GUI.Label(cellRect, item.data.path); } break; case MyColumns.State: { GUI.Label(cellRect, ReferenceFinderData.GetInfoByState(item.data.state),stateGUIStyle); } break; } } //根据资源信息获取资源图标 private Texture2D GetIcon(string path) { Object obj = AssetDatabase.LoadAssetAtPath(path, typeof(Object)); if (obj != null) { Texture2D icon = AssetPreview.GetMiniThumbnail(obj); if (icon == null) icon = AssetPreview.GetMiniTypeThumbnail(obj.GetType()); return icon; } return null; } }
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; using UnityEditor; using UnityEngine; public class ReferenceFinderData { //缓存路径 private const string CACHE_PATH = "Library/ReferenceFinderCache"; private const string CACHE_VERSION = "V1"; // 资源引用信息字典 public Dictionary<string, AssetDescription> assetDict = new Dictionary<string, AssetDescription>(); //收集资源引用信息并更新缓存 public void CollectDependenciesInfo() { try { ReadFromCache(); var allAssets = AssetDatabase.GetAllAssetPaths(); int totalCount = allAssets.Length; for (int i = 0; i < allAssets.Length; i++) { //每遍历100个Asset,更新一下进度条,同时对进度条的取消操作进行处理 if ((i % 100 == 0) && EditorUtility.DisplayCancelableProgressBar("Refresh", string.Format("Collecting {0} assets", i), (float)i / totalCount)) { EditorUtility.ClearProgressBar(); return; } if (File.Exists(allAssets[i])) ImportAsset(allAssets[i]); if (i % 2000 == 0) GC.Collect(); } //将信息写入缓存 EditorUtility.DisplayCancelableProgressBar("Refresh", "Write to cache", 1f); WriteToChache(); //生成引用数据 EditorUtility.DisplayCancelableProgressBar("Refresh", "Generating asset reference info", 1f); UpdateReferenceInfo(); EditorUtility.ClearProgressBar(); } catch(Exception e) { Debug.LogError(e); EditorUtility.ClearProgressBar(); } } //通过依赖信息更新引用信息 private void UpdateReferenceInfo() { foreach(var asset in assetDict) { foreach(var assetGuid in asset.Value.dependencies) { assetDict[assetGuid].references.Add(asset.Key); } } } // 生成并加入引用信息 // 只处理 Assets/ 文件夹中的文件 private void ImportAsset(string path) { if (!path.StartsWith("Assets/")) return; // 通过path获取guid进行储存 // path e.g. Assets/ResourceArt/ImageParent.prefab // guid 和 meta 文件中的 guid 一样 e.g. 20802022c3c1dcb40a49a7c168dd5be9 string guid = AssetDatabase.AssetPathToGUID(path); // 获取该资源的最后修改时间,用于之后的修改判断 Hash128 assetDependencyHash = AssetDatabase.GetAssetDependencyHash(path); // 如果assetDict没包含该guid或包含了修改时间不一样则需要更新 if (!assetDict.ContainsKey(guid) || assetDict[guid].assetDependencyHash != assetDependencyHash.ToString()) { //// 包含自身 e.g. //// Assets/ResourceArt/Image.prefab //// Assets/ResourceArt/Activity_bg_mask.png //// Assets/ResourceArt/ImageParent.prefab //var dependDefault = AssetDatabase.GetDependencies(path); //// 不包含自身 e.g. //// Assets/ResourceArt/Image.prefab //// Assets/ResourceArt/Activity_bg_mask.png //var dependNoRecur = AssetDatabase.GetDependencies(path, false); // 将每个资源的直接依赖资源转化为guid进行储存 var guids = AssetDatabase.GetDependencies(path, false). Select(p => AssetDatabase.AssetPathToGUID(p)). ToList(); // 生成asset依赖信息,被引用需要在所有的asset依赖信息生成完后才能生成 AssetDescription ad = new AssetDescription(); // e.g. ImageParent ad.name = Path.GetFileNameWithoutExtension(path); // e.g. Assets/ResourceArt/ImageParent.prefab ad.path = path; // e.g. 235a0c7ca1d4e6abb49b12b84c719cbd ad.assetDependencyHash = assetDependencyHash.ToString(); // e.g. // Assets/ResourceArt/Image.prefab // Assets/ResourceArt/Activity_bg_mask.png ad.dependencies = guids; if (assetDict.ContainsKey(guid)) assetDict[guid] = ad; else assetDict.Add(guid, ad); } } //读取缓存信息 public bool ReadFromCache() { assetDict.Clear(); if (!File.Exists(CACHE_PATH)) { return false; } var serializedGuid = new List<string>(); var serializedDependencyHash = new List<string>(); var serializedDenpendencies = new List<int[]>(); //反序列化数据 FileStream fs = File.OpenRead(CACHE_PATH); try { BinaryFormatter bf = new BinaryFormatter(); string cacheVersion = (string) bf.Deserialize(fs); if (cacheVersion != CACHE_VERSION) { return false; } EditorUtility.DisplayCancelableProgressBar("Import Cache", "Reading Cache", 0); serializedGuid = (List<string>) bf.Deserialize(fs); serializedDependencyHash = (List<string>) bf.Deserialize(fs); serializedDenpendencies = (List<int[]>) bf.Deserialize(fs); EditorUtility.ClearProgressBar(); } catch { //兼容旧版本序列化格式 return false; } finally { fs.Close(); } for (int i = 0; i < serializedGuid.Count; ++i) { string path = AssetDatabase.GUIDToAssetPath(serializedGuid[i]); if (!string.IsNullOrEmpty(path)) { var ad = new AssetDescription(); ad.name = Path.GetFileNameWithoutExtension(path); ad.path = path; ad.assetDependencyHash = serializedDependencyHash[i]; assetDict.Add(serializedGuid[i], ad); } } for(int i = 0; i < serializedGuid.Count; ++i) { string guid = serializedGuid[i]; if (assetDict.ContainsKey(guid)) { var guids = serializedDenpendencies[i]. Select(index => serializedGuid[index]). Where(g => assetDict.ContainsKey(g)). ToList(); assetDict[guid].dependencies = guids; } } UpdateReferenceInfo(); return true; } //写入缓存 private void WriteToChache() { if (File.Exists(CACHE_PATH)) File.Delete(CACHE_PATH); var serializedGuid = new List<string>(); var serializedDependencyHash = new List<string>(); var serializedDenpendencies = new List<int[]>(); //辅助映射字典 var guidIndex = new Dictionary<string, int>(); //序列化 using (FileStream fs = File.OpenWrite(CACHE_PATH)) { foreach (var pair in assetDict) { guidIndex.Add(pair.Key, guidIndex.Count); serializedGuid.Add(pair.Key); serializedDependencyHash.Add(pair.Value.assetDependencyHash); } foreach(var guid in serializedGuid) { //使用 Where 子句过滤目录 int[] indexes = assetDict[guid].dependencies. Where(s => guidIndex.ContainsKey(s)). Select(s => guidIndex[s]).ToArray(); serializedDenpendencies.Add(indexes); } BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs, CACHE_VERSION); bf.Serialize(fs, serializedGuid); bf.Serialize(fs, serializedDependencyHash); bf.Serialize(fs, serializedDenpendencies); } } //更新引用信息状态 public void UpdateAssetState(string guid) { AssetDescription ad; if (assetDict.TryGetValue(guid,out ad) && ad.state != AssetState.NODATA) { if (File.Exists(ad.path)) { //修改时间与记录的不同为修改过的资源 if (ad.assetDependencyHash != AssetDatabase.GetAssetDependencyHash(ad.path).ToString()) { ad.state = AssetState.CHANGED; } else { //默认为普通资源 ad.state = AssetState.NORMAL; } } //不存在为丢失 else { ad.state = AssetState.MISSING; } } //字典中没有该数据 else if(!assetDict.TryGetValue(guid, out ad)) { string path = AssetDatabase.GUIDToAssetPath(guid); ad = new AssetDescription(); ad.name = Path.GetFileNameWithoutExtension(path); ad.path = path; ad.state = AssetState.NODATA; assetDict.Add(guid, ad); } } //根据引用信息状态获取状态描述 public static string GetInfoByState(AssetState state) { if(state == AssetState.CHANGED) { return "<color=#F0672AFF>Changed</color>"; } else if (state == AssetState.MISSING) { return "<color=#FF0000FF>Missing</color>"; } else if(state == AssetState.NODATA) { return "<color=#FFE300FF>No Data</color>"; } return "Normal"; } public class AssetDescription { public string name = ""; public string path = ""; public string assetDependencyHash; public List<string> dependencies = new List<string>(); public List<string> references = new List<string>(); public AssetState state = AssetState.NORMAL; } public enum AssetState { NORMAL, CHANGED, MISSING, NODATA, } }
using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; using UnityEditor.IMGUI.Controls; public class ReferenceFinderWindow : EditorWindow { //依赖模式的key const string isDependPrefKey = "ReferenceFinderData_IsDepend"; //是否需要更新信息状态的key const string needUpdateStatePrefKey = "ReferenceFinderData_needUpdateState"; private static ReferenceFinderData data = new ReferenceFinderData(); private static bool initializedData = false; private bool isDepend = false; private bool needUpdateState = true; private bool needUpdateAssetTree = false; private bool initializedGUIStyle = false; //工具栏按钮样式 private GUIStyle toolbarButtonGUIStyle; //工具栏样式 private GUIStyle toolbarGUIStyle; //选中资源列表 private List<string> selectedAssetGuid = new List<string>(); private AssetTreeView m_AssetTreeView; [SerializeField] private TreeViewState m_TreeViewState; //查找资源引用信息 [MenuItem("Assets/Find References In Project %#&f", false, 25)] static void FindRef() { InitDataIfNeeded(); OpenWindow(); ReferenceFinderWindow window = GetWindow<ReferenceFinderWindow>(); window.UpdateSelectedAssets(); } //打开窗口 [MenuItem("Window/Reference Finder", false, 1000)] static void OpenWindow() { ReferenceFinderWindow window = GetWindow<ReferenceFinderWindow>(); window.wantsMouseMove = false; window.titleContent = new GUIContent("Ref Finder"); window.Show(); window.Focus(); } //初始化数据 static void InitDataIfNeeded() { if (!initializedData) { //初始化数据 if(!data.ReadFromCache()) { data.CollectDependenciesInfo(); } initializedData = true; } } //初始化GUIStyle void InitGUIStyleIfNeeded() { if (!initializedGUIStyle) { toolbarButtonGUIStyle = new GUIStyle("ToolbarButton"); toolbarGUIStyle = new GUIStyle("Toolbar"); initializedGUIStyle = true; } } //更新选中资源列表 private void UpdateSelectedAssets() { selectedAssetGuid.Clear(); foreach(var obj in Selection.objects) { string path = AssetDatabase.GetAssetPath(obj); //如果是文件夹 if (Directory.Exists(path)) { string[] folder = new string[] { path }; //将文件夹下所有资源作为选择资源 string[] guids = AssetDatabase.FindAssets(null, folder); foreach(var guid in guids) { if (!selectedAssetGuid.Contains(guid) && !Directory.Exists(AssetDatabase.GUIDToAssetPath(guid))) { selectedAssetGuid.Add(guid); } } } //如果是文件资源 else { string guid = AssetDatabase.AssetPathToGUID(path); selectedAssetGuid.Add(guid); } } needUpdateAssetTree = true; } //通过选中资源列表更新TreeView private void UpdateAssetTree() { if (needUpdateAssetTree && selectedAssetGuid.Count != 0) { var root = SelectedAssetGuidToRootItem(selectedAssetGuid); if(m_AssetTreeView == null) { //初始化TreeView if (m_TreeViewState == null) m_TreeViewState = new TreeViewState(); var headerState = AssetTreeView.CreateDefaultMultiColumnHeaderState(position.width); var multiColumnHeader = new MultiColumnHeader(headerState); m_AssetTreeView = new AssetTreeView(m_TreeViewState, multiColumnHeader); } m_AssetTreeView.assetRoot = root; m_AssetTreeView.CollapseAll(); m_AssetTreeView.Reload(); needUpdateAssetTree = false; } } private void OnEnable() { isDepend = PlayerPrefs.GetInt(isDependPrefKey, 0) == 1; needUpdateState = PlayerPrefs.GetInt(needUpdateStatePrefKey, 1) == 1; } private void OnGUI() { InitGUIStyleIfNeeded(); DrawOptionBar(); UpdateAssetTree(); if (m_AssetTreeView != null) { //绘制Treeview m_AssetTreeView.OnGUI(new Rect(0, toolbarGUIStyle.fixedHeight, position.width, position.height - toolbarGUIStyle.fixedHeight)); } } //绘制上条 public void DrawOptionBar() { EditorGUILayout.BeginHorizontal(toolbarGUIStyle); //刷新数据 if (GUILayout.Button("Refresh Data", toolbarButtonGUIStyle)) { data.CollectDependenciesInfo(); needUpdateAssetTree = true; EditorGUIUtility.ExitGUI(); } //修改模式 bool PreIsDepend = isDepend; isDepend = GUILayout.Toggle(isDepend, isDepend ? "Model(Depend)" : "Model(Reference)", toolbarButtonGUIStyle,GUILayout.Width(100)); if(PreIsDepend != isDepend){ OnModelSelect(); } //是否需要更新状态 bool PreNeedUpdateState = needUpdateState; needUpdateState = GUILayout.Toggle(needUpdateState, "Need Update State", toolbarButtonGUIStyle); if (PreNeedUpdateState != needUpdateState) { PlayerPrefs.SetInt(needUpdateStatePrefKey, needUpdateState ? 1 : 0); } GUILayout.FlexibleSpace(); //扩展 if (GUILayout.Button("Expand", toolbarButtonGUIStyle)) { if (m_AssetTreeView != null) m_AssetTreeView.ExpandAll(); } //折叠 if (GUILayout.Button("Collapse", toolbarButtonGUIStyle)) { if (m_AssetTreeView != null) m_AssetTreeView.CollapseAll(); } EditorGUILayout.EndHorizontal(); } private void OnModelSelect() { needUpdateAssetTree = true; PlayerPrefs.SetInt(isDependPrefKey, isDepend ? 1 : 0); } //生成root相关 private HashSet<string> updatedAssetSet = new HashSet<string>(); //通过选择资源列表生成TreeView的根节点 private AssetViewItem SelectedAssetGuidToRootItem(List<string> selectedAssetGuid) { updatedAssetSet.Clear(); int elementCount = 0; var root = new AssetViewItem { id = elementCount, depth = -1, displayName = "Root", data = null }; int depth = 0; var stack = new Stack<string>(); foreach (var childGuid in selectedAssetGuid) { var child = CreateTree(childGuid, ref elementCount, depth, stack); if (child != null) root.AddChild(child); } updatedAssetSet.Clear(); return root; } //通过每个节点的数据生成子节点 private AssetViewItem CreateTree(string guid, ref int elementCount, int _depth, Stack<string> stack) { if (stack.Contains(guid)) return null; stack.Push(guid); if (needUpdateState && !updatedAssetSet.Contains(guid)) { data.UpdateAssetState(guid); updatedAssetSet.Add(guid); } ++elementCount; var referenceData = data.assetDict[guid]; var root = new AssetViewItem { id = elementCount, displayName = referenceData.name, data = referenceData, depth = _depth }; var childGuids = isDepend ? referenceData.dependencies : referenceData.references; foreach (var childGuid in childGuids) { var child = CreateTree(childGuid, ref elementCount, _depth + 1, stack); if (child != null) root.AddChild(child); } stack.Pop(); return root; } }