├── Documentation~ ├── Guide.md └── Images │ ├── 2018-11-10_155257.png │ ├── 2018-11-10_155444.png │ ├── 2018-11-10_155700.png │ ├── 2018-11-10_155758.png │ ├── 2018-11-10_155853.png │ ├── ApiDemo.gif │ ├── CustomDependSource.png │ └── MainWindows.png ├── Editor.meta ├── Editor ├── AssetDanshariHandler.cs ├── AssetDanshariHandler.cs.meta ├── AssetDanshariSetting.cs ├── AssetDanshariSetting.cs.meta ├── AssetDanshariStyle.cs ├── AssetDanshariStyle.cs.meta ├── AssetDanshariUtility.cs ├── AssetDanshariUtility.cs.meta ├── AssetDanshariWatcher.cs ├── AssetDanshariWatcher.cs.meta ├── AssetDanshariWindow.cs ├── AssetDanshariWindow.cs.meta ├── DependenciesWindow.meta ├── DependenciesWindow │ ├── AssetDependenciesTreeModel.cs │ ├── AssetDependenciesTreeModel.cs.meta │ ├── AssetDependenciesTreeView.cs │ ├── AssetDependenciesTreeView.cs.meta │ ├── AssetDependenciesWindow.cs │ └── AssetDependenciesWindow.cs.meta ├── DuplicateWindow.meta ├── DuplicateWindow │ ├── AssetDuplicateTreeModel.cs │ ├── AssetDuplicateTreeModel.cs.meta │ ├── AssetDuplicateTreeView.cs │ ├── AssetDuplicateTreeView.cs.meta │ ├── AssetDuplicateWindow.cs │ └── AssetDuplicateWindow.cs.meta ├── ReferenceWindow.meta ├── ReferenceWindow │ ├── AssetReferenceTreeModel.cs │ ├── AssetReferenceTreeModel.cs.meta │ ├── AssetReferenceTreeView.cs │ ├── AssetReferenceTreeView.cs.meta │ ├── AssetReferenceWindow.cs │ └── AssetReferenceWindow.cs.meta ├── TreeDataModel.meta ├── TreeDataModel │ ├── AssetBaseWindow.cs │ ├── AssetBaseWindow.cs.meta │ ├── AssetMultiColumnHeader.cs │ ├── AssetMultiColumnHeader.cs.meta │ ├── AssetTreeModel.cs │ ├── AssetTreeModel.cs.meta │ ├── AssetTreeView.cs │ ├── AssetTreeView.cs.meta │ ├── AssetTreeViewItem.cs │ └── AssetTreeViewItem.cs.meta ├── WuHuan.AssetDanshari.Editor.asmdef └── WuHuan.AssetDanshari.Editor.asmdef.meta ├── LICENSE.md ├── LICENSE.md.meta ├── README.md ├── README.md.meta ├── Samples~ ├── Csv.meta ├── Csv │ ├── image_config.csv │ └── image_config.csv.meta ├── Fonts.meta ├── Fonts │ ├── FredokaOne-Regular.ttf │ └── FredokaOne-Regular.ttf.meta ├── PNG.meta ├── PNG │ ├── AA.meta │ ├── AA │ │ ├── UI_Button_Standard_Green.png │ │ ├── UI_Button_Standard_Green.png.meta │ │ ├── UI_Button_Standard_Orange.png │ │ ├── UI_Button_Standard_Orange.png.meta │ │ ├── UI_Button_Standard_Red.png │ │ ├── UI_Button_Standard_Red.png.meta │ │ ├── UI_Button_Standard_Sky.png │ │ ├── UI_Button_Standard_Sky.png.meta │ │ ├── UI_Fill_Green.png │ │ ├── UI_Fill_Green.png.meta │ │ ├── UI_Fill_Orange.png │ │ ├── UI_Fill_Orange.png.meta │ │ ├── UI_Fill_Red.png │ │ ├── UI_Fill_Red.png.meta │ │ ├── UI_Fill_Sky.png │ │ ├── UI_Fill_Sky.png.meta │ │ ├── UI_Frame_Dark_Transparent.png │ │ ├── UI_Frame_Dark_Transparent.png.meta │ │ ├── UI_Frame_Dark_White.png │ │ ├── UI_Frame_Dark_White.png.meta │ │ ├── UI_Frame_Transparent.png │ │ ├── UI_Frame_Transparent.png.meta │ │ ├── UI_Tab_Active.png │ │ ├── UI_Tab_Active.png.meta │ │ ├── UI_Tab_Inactive.png │ │ └── UI_Tab_Inactive.png.meta │ ├── BB.meta │ ├── BB │ │ ├── UI_Fill_Green 1.png │ │ ├── UI_Fill_Green 1.png.meta │ │ ├── UI_Frame_White.png │ │ ├── UI_Frame_White.png.meta │ │ ├── UI_Panel_Content.png │ │ ├── UI_Panel_Content.png.meta │ │ ├── UI_Panel_Window.png │ │ ├── UI_Panel_Window.png.meta │ │ ├── UI_Tab_Inactive 1.png │ │ └── UI_Tab_Inactive 1.png.meta │ ├── Common.meta │ └── Common │ │ └── CC.meta ├── Prefab.meta ├── Prefab │ ├── sky_prefab.prefab │ └── sky_prefab.prefab.meta ├── Resource Icons.meta ├── Resource Icons │ ├── UI_Graphic_Resource_Coins.png │ ├── UI_Graphic_Resource_Coins.png.meta │ ├── UI_Graphic_Resource_Food.png │ ├── UI_Graphic_Resource_Food.png.meta │ ├── UI_Graphic_Resource_Gems.png │ ├── UI_Graphic_Resource_Gems.png.meta │ ├── UI_Graphic_Resource_Iron.png │ ├── UI_Graphic_Resource_Iron.png.meta │ ├── UI_Graphic_Resource_Tools.png │ ├── UI_Graphic_Resource_Tools.png.meta │ ├── UI_Graphic_Resource_Wood.png │ └── UI_Graphic_Resource_Wood.png.meta ├── Samples.meta ├── Samples │ ├── Achievements.unity │ ├── Achievements.unity.meta │ ├── Background.png │ ├── Background.png.meta │ ├── HomeScreen.unity │ ├── HomeScreen.unity.meta │ ├── LogIn.unity │ ├── LogIn.unity.meta │ ├── PopUp.unity │ ├── PopUp.unity.meta │ ├── Resource Icons.unity │ ├── Resource Icons.unity.meta │ ├── SettingsWindow.unity │ ├── SettingsWindow.unity.meta │ ├── Shop.unity │ ├── Shop.unity.meta │ ├── Simple Vector Icons.unity │ └── Simple Vector Icons.unity.meta ├── Scripts.meta ├── Scripts │ ├── Editor.meta │ └── Editor │ │ ├── AssetDanshariHandlerDemo.cs │ │ ├── AssetDanshariHandlerDemo.cs.meta │ │ ├── UISpriteDefine.cs │ │ ├── UISpriteDefine.cs.meta │ │ ├── WuHuan.AssetDanshari.Sample.Editor.asmdef │ │ └── WuHuan.AssetDanshari.Sample.Editor.asmdef.meta ├── rg.meta └── rg │ ├── rg.exe │ └── rg.exe.meta ├── package.json └── package.json.meta /Documentation~/Guide.md: -------------------------------------------------------------------------------- 1 | # 用户指南 2 | 3 | 本指南旨在简要介绍 UnityAssetDanshari 及其功能概述。 4 | 5 | ## 简介 6 | 7 | UnityAssetDanshari 是一个 Unity 资源清理重复以及引用被引用查找工具。内核使用 ripgrep 文本搜索工具,使得资源查找速度飞快。 8 | 9 | ## 首次使用 10 | 11 | 提前准备 ripgrep 的二进制文件[https://github.com/BurntSushi/ripgrep/releases](https://github.com/BurntSushi/ripgrep/releases), 也可以直接使用示例工程自带的 Windows 版二进制文件。 12 | 13 | ![](./Images/MainWindows.png) 14 | 15 | 工具入口为菜单栏【美术工具/资源断舍离】,如果导入了示例工程,则打开会包含默认的配置项。点击右上角的`ripgrep`按钮,可以进行配置`ripgrep路径`。如果没有配置`ripgrep路径`则会使用默认的普通文件搜索方式,速度相当慢。 16 | 17 | ## 默认配置项 18 | 19 | 工具配置文件保存在`"UserSettings/AssetDanshariSetting.asset"`,为了能够团队默认能够有一样的配置内容,可以绑定创建配置事件。 20 | 21 | ```csharp 22 | [InitializeOnLoadMethod] 23 | private static void InitOnLoad() 24 | { 25 | AssetDanshariHandler.onCreateSetting += OnCreateSetting; 26 | AssetDanshariHandler.onDependenciesLoadDataMore += OnDependenciesLoadDataMore; 27 | AssetDanshariHandler.onDependenciesContextDraw += OnDependenciesContextDraw; 28 | } 29 | ``` 30 | 31 | 用户自定义配置事件,可以指定rg到工程的统一外部工具路径。 32 | 33 | ```csharp 34 | private static AssetDanshariSetting OnCreateSetting() 35 | { 36 | var setting = ScriptableObject.CreateInstance(); 37 | setting.ripgrepPath = "Assets/Samples/Asset Danshari/1.0.0/Simple Demo/rg/rg.exe"; 38 | setting.assetReferenceInfos.Add(new AssetDanshariSetting.AssetReferenceInfo() 39 | { 40 | referenceFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Prefab\" || \"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Samples\"", 41 | assetFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/PNG\"", 42 | assetCommonFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/PNG/Common\"" 43 | }); 44 | return setting; 45 | } 46 | ``` 47 | 48 | ## 检查列表 49 | 50 | 列表按资源的使用环境进行分组。 51 | - 将`Project`窗口里的文件或文件夹路径拖到目录框 52 | - 多路径方式可以多选后再拖入,也可以按住`Ctrl`进行添加 53 | - 【公共资源目录】是用来放公共资源的路径,比如 UI 图片资源存在被多个界面引用的时候,可以快捷操作移动资源到公共目录 54 | 55 | ## 引用查找 56 | 57 | 对【引用目录】下的每个资源进行检查是否引用到了【资源目录】下的资源,比如 UI 界面预制引用 UI 图片。 58 | 59 | ![](https://img-blog.csdnimg.cn/20181110160138165.png) 60 | 61 | 双击项,可以自动在【Project】窗口定位到资源。 62 | 63 | ## 被引用查找 64 | 65 | 对【资源目录】下的每个资源进行分析,看是否被【引用目录】下的资源进行引用,比如 UI 图片被哪些 UI 界面进行引用。 66 | 67 | ![](https://img-blog.csdnimg.cn/20181110160334244.png) 68 | 69 | 【删除选中资源】菜单项功能,是直接对资源进行删除,当发现没有被使用到时,可以这样快捷删除资源。 70 | 71 | 右上角【过滤为空】按钮,可以过滤显示没有被使用的资源,方便快速查看。 72 | 73 | ## 检查重复 74 | 75 | 对资源文件进行逐块 Hash128 检查重复,再对重复的资源进行操作。 76 | 77 | ![](https://img-blog.csdnimg.cn/20181110160230435.png) 78 | 79 | 80 | 【资源被引用查找】菜单项功能,是在【被引用查找】窗口里定位到此资源的使用情况,方便进行决定保留还是删除,注意,需要先打开了【被引用查找】窗口才可以定位到。 81 | 82 | 【仅使用此资源,其余删除】菜单项功能,将会删除其余重复的资源,并且将所有引用到这些删除资源的地方都改成引用保留的那一个。 83 | 84 | 当美术对同一资源进行切图两次,会导致文件 Hash128 值不一样,就无法被工具所检测到。出现这种情况的时候,肉眼发现到两个资源其实是一样的,可以在这个窗口右上角点击【手动添加】按钮。 85 | 86 | ![](https://img-blog.csdnimg.cn/20181110160308811.png) 87 | 88 | 手动进行添加资源路径,将资源文件拖动到文本框,再点击【确定】。就会自动定位到新增的数据,接着就可以按处理重复资源一样进行操作。 89 | 90 | ## 扩展被引用来源 91 | 92 | ![](./Images/CustomDependSource.png) 93 | 94 | 资源不止被另外的资源直接引用,还可能配置在表里、代码里进行动态使用,在这种情况下,可以绑定`onDependenciesLoadDataMore`事件,对传入的资源路径进行判别处理,参照示例工程代码。 95 | 96 | ## API 调用 97 | 98 | 每次需要拖曳文件/目录到窗口可能会觉得不方便,或者想要集成到自己的工具里,可以使用公开的 API,调用三个不同的窗口。 99 | 100 | ```csharp 101 | /// 102 | /// 显示引用查找窗口 103 | /// 104 | /// 引用的文件、目录集合 105 | /// 资源的文件、目录集合 106 | /// 公共资源目录集合 107 | public static void DisplayReferenceWindow(string refPaths, string resPaths, string commonPaths = "") 108 | 109 | /// 110 | /// 显示被引用查找窗口 111 | /// 112 | public static void DisplayDependenciesWindow(string refPaths, string resPaths, string commonPaths = "") 113 | 114 | /// 115 | /// 显示重复资源检查窗口 116 | /// 117 | public static void DisplayDuplicateWindow(string refPaths, string resPaths, string commonPaths = "") 118 | ``` 119 | 120 | ![](./Images/ApiDemo.gif) 121 | 122 | 示例工程举例实现右键资源文件来查看被引用情况。 123 | 124 | ```csharp 125 | [MenuItem("Assets/查找该资源的被引用")] 126 | private static void FindReferenceAll() 127 | { 128 | string[] paths = new string[Selection.objects.Length]; 129 | for (var i = 0; i < Selection.objects.Length; i++) 130 | { 131 | var o = Selection.objects[i]; 132 | paths[i] = AssetDatabase.GetAssetPath(o); 133 | } 134 | 135 | AssetDanshariWindow.DisplayDependenciesWindow( 136 | AssetDanshariUtility.PathArrayToStr(new []{"Assets"}), 137 | AssetDanshariUtility.PathArrayToStr(paths)); 138 | } 139 | ``` 140 | 141 | ## 当前限制 142 | 143 | 二进制配置文件,如:Lighting data, Terrain data 之类,无法查找其引用资源关系。 -------------------------------------------------------------------------------- /Documentation~/Images/2018-11-10_155257.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/2018-11-10_155257.png -------------------------------------------------------------------------------- /Documentation~/Images/2018-11-10_155444.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/2018-11-10_155444.png -------------------------------------------------------------------------------- /Documentation~/Images/2018-11-10_155700.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/2018-11-10_155700.png -------------------------------------------------------------------------------- /Documentation~/Images/2018-11-10_155758.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/2018-11-10_155758.png -------------------------------------------------------------------------------- /Documentation~/Images/2018-11-10_155853.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/2018-11-10_155853.png -------------------------------------------------------------------------------- /Documentation~/Images/ApiDemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/ApiDemo.gif -------------------------------------------------------------------------------- /Documentation~/Images/CustomDependSource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/CustomDependSource.png -------------------------------------------------------------------------------- /Documentation~/Images/MainWindows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Documentation~/Images/MainWindows.png -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e51ef15f2faa914fb4789e159aef0d7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/AssetDanshariHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | 5 | namespace AssetDanshari 6 | { 7 | public class AssetDanshariHandler 8 | { 9 | public static Func onCreateSetting; 10 | 11 | public static Action onDependenciesContextDraw; 12 | 13 | internal static Action onDependenciesFindItem; 14 | 15 | public static Action, AssetTreeModel> onDependenciesLoadDataMore; 16 | } 17 | } -------------------------------------------------------------------------------- /Editor/AssetDanshariHandler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f71ab1561007cf479e43125f2feac04 3 | timeCreated: 1537319465 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/AssetDanshariSetting.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using UnityEditor; 5 | using UnityEditorInternal; 6 | using UnityEngine; 7 | 8 | namespace AssetDanshari 9 | { 10 | //[CreateAssetMenu (fileName = "AssetDanshariSetting", menuName = "AssetDanshari Setting", order = 1)] 11 | public class AssetDanshariSetting : ScriptableObject 12 | { 13 | public string ripgrepPath; 14 | 15 | [Serializable] 16 | public class AssetReferenceInfo 17 | { 18 | public string title = String.Empty; 19 | public string referenceFolder = String.Empty; 20 | public string assetFolder = String.Empty; 21 | public string assetCommonFolder = String.Empty; 22 | } 23 | 24 | [SerializeField] 25 | private List m_AssetReferenceInfos = new List(); 26 | 27 | public List assetReferenceInfos 28 | { 29 | get { return m_AssetReferenceInfos; } 30 | } 31 | 32 | private static readonly string kUserSettingsPath = "UserSettings/AssetDanshariSetting.asset"; 33 | 34 | private static AssetDanshariSetting sSetting; 35 | 36 | public static AssetDanshariSetting Get() 37 | { 38 | if (sSetting == null) 39 | { 40 | LoadSetting(); 41 | } 42 | 43 | return sSetting; 44 | } 45 | 46 | private static void LoadSetting() 47 | { 48 | if (sSetting != null) 49 | { 50 | return; 51 | } 52 | 53 | UnityEngine.Object[] objects = InternalEditorUtility.LoadSerializedFileAndForget(kUserSettingsPath); 54 | if (objects != null && objects.Length > 0) 55 | { 56 | sSetting = objects[0] as AssetDanshariSetting; 57 | } 58 | if (sSetting == null) 59 | { 60 | string[] guids = AssetDatabase.FindAssets("t:" + typeof(AssetDanshariSetting).Name); 61 | if (guids.Length > 0) 62 | { 63 | string path = AssetDatabase.GUIDToAssetPath(guids[0]); 64 | sSetting = AssetDatabase.LoadAssetAtPath(path); 65 | } 66 | } 67 | if (sSetting == null) 68 | { 69 | if (AssetDanshariHandler.onCreateSetting != null) 70 | { 71 | sSetting = AssetDanshariHandler.onCreateSetting(); 72 | } 73 | else 74 | { 75 | sSetting = CreateInstance(); 76 | } 77 | SaveSetting(); 78 | } 79 | } 80 | 81 | public static void SaveSetting() 82 | { 83 | if (sSetting == null) 84 | { 85 | return; 86 | } 87 | 88 | var settingPath = AssetDatabase.GetAssetPath(sSetting); 89 | if (!string.IsNullOrEmpty(settingPath)) 90 | { 91 | return; 92 | } 93 | 94 | string folderPath = Path.GetDirectoryName(kUserSettingsPath); 95 | if (!Directory.Exists(folderPath)) 96 | { 97 | Directory.CreateDirectory(folderPath); 98 | } 99 | 100 | InternalEditorUtility.SaveToSerializedFileAndForget(new[] { sSetting }, kUserSettingsPath, true); 101 | } 102 | } 103 | } -------------------------------------------------------------------------------- /Editor/AssetDanshariSetting.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0aed87558357b5d49a95b05d3135a2a4 3 | timeCreated: 1536196519 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/AssetDanshariStyle.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace AssetDanshari 5 | { 6 | public class AssetDanshariStyle 7 | { 8 | public class Style 9 | { 10 | public GUIContent help = new GUIContent("帮助"); 11 | public GUIContent about = new GUIContent("关于"); 12 | public GUIContent exportCsv = new GUIContent("导出 CSV"); 13 | public GUIContent forceText = new GUIContent("Asset Serialization must be ForceText"); 14 | public GUIContent assetReferenceTitle = new GUIContent("检查列表"); 15 | public GUIContent assetReferenceAsset = new GUIContent("资源文件/目录", "存放资源的文件夹路径"); 16 | public GUIContent assetReferenceAssetCommon = new GUIContent("公共资源目录", "整理资源时所放置的公共文件夹路径"); 17 | public GUIContent assetReferenceReference = new GUIContent("引用文件/目录", "使用到资源的预制文件夹路径"); 18 | public GUIContent assetReferenceCheckDup = new GUIContent("检查重复"); 19 | public GUIContent assetReferenceCheckRef = new GUIContent("引用查找"); 20 | public GUIContent assetReferenceDepend = new GUIContent("被引用查找"); 21 | 22 | public GUIContent grepPath = new GUIContent("ripgrep 路径"); 23 | public GUIContent grepNotSet = new GUIContent("ripgrep 未设置"); 24 | public GUIContent grepEnabled = new GUIContent("ripgrep 已启用"); 25 | 26 | public GUIContent duplicateTitle = new GUIContent("重复资源检查"); 27 | public GUIContent duplicateWaiting = new GUIContent("等待进行检查重复资源"); 28 | public GUIContent duplicateNothing = new GUIContent("所检查的文件夹没有重复资源"); 29 | public GUIContent duplicateManualAdd = new GUIContent("手动添加"); 30 | public GUIContent duplicateHeaderContent = new GUIContent("名称"); 31 | public GUIContent duplicateHeaderContent2 = new GUIContent("路径"); 32 | public GUIContent duplicateHeaderContent3 = new GUIContent("大小"); 33 | public GUIContent duplicateHeaderContent4 = new GUIContent("创建时间"); 34 | public GUIContent duplicateContextOnlyUseThis = new GUIContent("仅使用此资源,其余删除"); 35 | public string duplicateContextMoveComm = "移入公共目录/"; 36 | public string duplicateGroup = "文件数:{0}"; 37 | 38 | public GUIContent dependenciesTitle = new GUIContent("资源被引用查找"); 39 | public GUIContent dependenciesWaiting = new GUIContent("等待进行资源被引用查找"); 40 | public GUIContent dependenciesNothing = new GUIContent("资源文件夹没有任何数据"); 41 | public GUIContent dependenciesHeaderContent2 = new GUIContent("被引用的路径"); 42 | public GUIContent dependenciesDelete = new GUIContent("删除选中资源"); 43 | public GUIContent dependenciesFilter = new GUIContent("过滤为空"); 44 | 45 | public GUIContent referenceTitle = new GUIContent("引用查找"); 46 | public GUIContent referenceWaiting = new GUIContent("等待进行引用查找"); 47 | public GUIContent referenceNothing = new GUIContent("文件夹没有任何数据"); 48 | public GUIContent referenceHeaderContent2 = new GUIContent("引用的资源"); 49 | public GUIContent referenceHeaderContent3 = new GUIContent("隶属"); 50 | 51 | public GUIContent iconDelete = EditorGUIUtility.IconContent("AS Badge Delete"); 52 | public GUIContent iconNew = EditorGUIUtility.IconContent("AS Badge New"); 53 | 54 | public string progressTitle = "正在处理"; 55 | public string progressTime = "请耐心等待..."; 56 | public string errorTitle = "错误信息"; 57 | public string continueStr = "继续执行"; 58 | public string cancelStr = "取消"; 59 | public string sureStr = "确定"; 60 | public string progressFinish = "处理结束"; 61 | public string deleteFile = "正在删除文件..."; 62 | public GUIContent expandAll = new GUIContent("展开"); 63 | public GUIContent expandAll2 = new GUIContent("全部展开"); 64 | public GUIContent expandAll3 = new GUIContent("全部展开除最后一层"); 65 | public GUIContent collapseAll = new GUIContent("折叠"); 66 | public GUIContent collapseAll2 = new GUIContent("全部折叠"); 67 | public GUIContent collapseAll3 = new GUIContent("仅折叠最后一层"); 68 | public GUIContent locationContext = new GUIContent("定位"); 69 | public GUIContent explorerContext = new GUIContent("打开所在文件夹"); 70 | public GUIContent nameHeaderContent = new GUIContent("名称"); 71 | public Texture2D folderIcon = EditorGUIUtility.FindTexture("Folder Icon"); 72 | 73 | public GUIStyle labelStyle; 74 | 75 | public void InitGUI() 76 | { 77 | if (labelStyle == null) 78 | { 79 | labelStyle = new GUIStyle(EditorStyles.label); 80 | labelStyle.alignment = TextAnchor.MiddleRight; 81 | } 82 | } 83 | } 84 | 85 | private static Style sStyle; 86 | 87 | public static Style Get() 88 | { 89 | if (sStyle == null) 90 | { 91 | sStyle = new Style(); 92 | } 93 | 94 | return sStyle; 95 | } 96 | } 97 | } -------------------------------------------------------------------------------- /Editor/AssetDanshariStyle.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d99f6ef26f42ced42bf63e0a46738c97 3 | timeCreated: 1536198968 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/AssetDanshariUtility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using System.IO; 4 | using System.Text; 5 | using UnityEditor; 6 | 7 | namespace AssetDanshari 8 | { 9 | public static class AssetDanshariUtility 10 | { 11 | public static string[] PathStrToArray(string paths) 12 | { 13 | paths = paths.Trim('\"'); 14 | return paths.Split(new[] { "\" || \"" }, StringSplitOptions.RemoveEmptyEntries); 15 | } 16 | 17 | public static string PathArrayToStr(string[] paths) 18 | { 19 | var pathStr = '\"' + string.Join("\" || \"", paths) + '\"'; 20 | return pathStr; 21 | } 22 | 23 | public static bool IsPlainTextExt(string ext) 24 | { 25 | ext = ext.ToLower(); 26 | return ext.EndsWith(".prefab") || ext.EndsWith(".unity") || 27 | ext.EndsWith(".mat") || ext.EndsWith(".asset") || 28 | ext.EndsWith(".controller") || ext.EndsWith(".anim"); 29 | } 30 | 31 | public static bool IsMetaExt(string ext) 32 | { 33 | ext = ext.ToLower(); 34 | return ext.EndsWith(".meta"); 35 | } 36 | 37 | public static string GetPathFromTextMetaFilePath(string metaFile) 38 | { 39 | return metaFile.Substring(0, metaFile.Length - 5); 40 | } 41 | 42 | public static string GetTextMetaFilePathFromPath(string file) 43 | { 44 | return file + ".meta"; 45 | } 46 | 47 | public static string GetSaveFilePath(string key) 48 | { 49 | string path = EditorPrefs.GetString("RecentSaveFilePath" + key, Application.dataPath + key + ".csv"); 50 | path = EditorUtility.SaveFilePanel("Save File ..", Path.GetDirectoryName(path), Path.GetFileName(path), "csv"); 51 | path = path.Replace('\\', '/'); 52 | if (!string.IsNullOrEmpty(path)) 53 | { 54 | EditorPrefs.SetString("RecentSaveFilePath" + key, path); 55 | } 56 | return path; 57 | } 58 | 59 | public static void SaveFileText(string path, string text) 60 | { 61 | try 62 | { 63 | File.WriteAllText(path, text, Encoding.UTF8); 64 | System.Diagnostics.Process.Start(path); 65 | } 66 | catch (Exception e) 67 | { 68 | EditorUtility.DisplayDialog(AssetDanshariStyle.Get().errorTitle, e.Message, AssetDanshariStyle.Get().sureStr); 69 | throw; 70 | } 71 | } 72 | 73 | public static void DisplayThreadProgressBar(int totalFiles, int filesFinished) 74 | { 75 | string msg = String.Format(@"{0} ({1}/{2})", AssetDanshariStyle.Get().progressTitle, 76 | (filesFinished + 1).ToString(), totalFiles.ToString()); 77 | EditorUtility.DisplayProgressBar(AssetDanshariStyle.Get().progressTitle, msg, (filesFinished + 1) * 1f / totalFiles); 78 | } 79 | 80 | public static void DisplayTimeThreadProgressBar() 81 | { 82 | EditorUtility.DisplayProgressBar(AssetDanshariStyle.Get().progressTitle, AssetDanshariStyle.Get().progressTime, 0.12f); 83 | } 84 | } 85 | } -------------------------------------------------------------------------------- /Editor/AssetDanshariUtility.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85da7a918f02429bb10fd991722262e3 3 | timeCreated: 1536397877 -------------------------------------------------------------------------------- /Editor/AssetDanshariWatcher.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEditor; 3 | 4 | namespace AssetDanshari 5 | { 6 | public class AssetDanshariWatcher : AssetPostprocessor 7 | { 8 | public static event Action onImportedAssets; 9 | public static event Action onDeletedAssets; 10 | public static event Action onMovedAssets; 11 | 12 | static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) 13 | { 14 | if (importedAssets.Length > 0 && onImportedAssets != null) 15 | { 16 | onImportedAssets(importedAssets); 17 | } 18 | 19 | if (deletedAssets.Length > 0 && onDeletedAssets != null) 20 | { 21 | onDeletedAssets(deletedAssets); 22 | } 23 | 24 | if (movedAssets.Length > 0 && onMovedAssets != null) 25 | { 26 | onMovedAssets(movedFromAssetPaths, movedAssets); 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Editor/AssetDanshariWatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df375ac844a64a3d82c5ac0868c07d79 3 | timeCreated: 1536739958 -------------------------------------------------------------------------------- /Editor/AssetDanshariWindow.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEditorInternal; 3 | using UnityEngine; 4 | 5 | namespace AssetDanshari 6 | { 7 | public class AssetDanshariWindow : EditorWindow 8 | { 9 | [MenuItem("美术工具/资源断舍离")] 10 | static void ShowWindow() 11 | { 12 | GetWindow(); 13 | } 14 | 15 | private Vector2 m_ScrollViewVector2; 16 | private ReorderableList m_ReorderableList; 17 | private bool m_IsForceText; 18 | private bool m_ShowGrepSetting; 19 | 20 | 21 | private void Awake() 22 | { 23 | titleContent.text = "资源断舍离"; 24 | minSize = new Vector2(600, 340); 25 | } 26 | 27 | private void OnGUI() 28 | { 29 | Init(); 30 | var style = AssetDanshariStyle.Get(); 31 | 32 | if (!m_IsForceText) 33 | { 34 | EditorGUILayout.LabelField(style.forceText); 35 | return; 36 | } 37 | 38 | EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); 39 | GUILayout.FlexibleSpace(); 40 | EditorGUI.BeginChangeCheck(); 41 | m_ShowGrepSetting = GUILayout.Toggle(m_ShowGrepSetting, string.IsNullOrEmpty(AssetDanshariSetting.Get().ripgrepPath) ? 42 | style.grepNotSet : style.grepEnabled, EditorStyles.toolbarButton); 43 | if (EditorGUI.EndChangeCheck()) 44 | { 45 | AssetDanshariSetting.SaveSetting(); 46 | } 47 | EditorGUILayout.EndHorizontal(); 48 | if (m_ShowGrepSetting) 49 | { 50 | EditorGUILayout.BeginHorizontal(); 51 | AssetDanshariSetting.Get().ripgrepPath = EditorGUILayout.TextField(style.grepPath, AssetDanshariSetting.Get().ripgrepPath); 52 | if (GUILayout.Button("O", GUILayout.ExpandWidth(false))) 53 | { 54 | var path = EditorUtility.OpenFilePanel(style.grepPath.text, "", "*"); 55 | if (!string.IsNullOrEmpty(path)) 56 | { 57 | GUI.FocusControl(null); 58 | AssetDanshariSetting.Get().ripgrepPath = path; 59 | } 60 | } 61 | EditorGUILayout.EndHorizontal(); 62 | EditorGUILayout.Space(); 63 | } 64 | 65 | if (m_ReorderableList != null) 66 | { 67 | m_ScrollViewVector2 = GUILayout.BeginScrollView(m_ScrollViewVector2); 68 | m_ReorderableList.DoLayoutList(); 69 | GUILayout.EndScrollView(); 70 | } 71 | } 72 | 73 | private void Init() 74 | { 75 | if (m_ReorderableList == null) 76 | { 77 | m_IsForceText = EditorSettings.serializationMode == SerializationMode.ForceText; 78 | if (!m_IsForceText) 79 | { 80 | return; 81 | } 82 | } 83 | 84 | if (m_ReorderableList == null) 85 | { 86 | m_ReorderableList = new ReorderableList(AssetDanshariSetting.Get().assetReferenceInfos, null, true, true, true, true); 87 | m_ReorderableList.drawHeaderCallback = OnDrawHeaderCallback; 88 | m_ReorderableList.drawElementCallback = OnDrawElementCallback; 89 | m_ReorderableList.elementHeight += 60; 90 | } 91 | } 92 | 93 | private void OnDrawHeaderCallback(Rect rect) 94 | { 95 | EditorGUI.LabelField(rect, AssetDanshariStyle.Get().assetReferenceTitle); 96 | } 97 | 98 | private void OnDrawElementCallback(Rect rect, int index, bool isactive, bool isfocused) 99 | { 100 | if (AssetDanshariSetting.Get() == null || AssetDanshariSetting.Get().assetReferenceInfos.Count < index) 101 | { 102 | return; 103 | } 104 | 105 | var style = AssetDanshariStyle.Get(); 106 | var info = AssetDanshariSetting.Get().assetReferenceInfos[index]; 107 | rect.height = EditorGUIUtility.singleLineHeight; 108 | rect.y += 2; 109 | 110 | EditorGUI.BeginChangeCheck(); 111 | info.title = EditorGUI.TextField(rect, info.title); 112 | rect.y += EditorGUIUtility.singleLineHeight + 2; 113 | 114 | Rect rect2 = new Rect(rect) { width = 85f }; 115 | Rect rect3 = new Rect(rect) { x = rect2.x + rect2.width, width = rect.width - rect2.width - 150f }; 116 | Rect rect4 = new Rect(rect) { x = rect3.x + rect3.width + 5f, width = 70f }; 117 | Rect rect5 = new Rect(rect) { x = rect4.x + rect4.width + 5f, width = 70f }; 118 | EditorGUI.LabelField(rect2, style.assetReferenceReference); 119 | info.referenceFolder = EditorGUI.TextField(rect3, info.referenceFolder); 120 | info.referenceFolder = OnDrawElementAcceptDrop(rect3, info.referenceFolder); 121 | bool valueChanged = EditorGUI.EndChangeCheck(); 122 | if (GUI.Button(rect4, style.assetReferenceCheckRef)) 123 | { 124 | AssetDanshariSetting.SaveSetting(); 125 | DisplayReferenceWindow(info.referenceFolder, info.assetFolder, info.assetCommonFolder); 126 | } 127 | 128 | rect2.y += EditorGUIUtility.singleLineHeight + 2; 129 | rect3.y += EditorGUIUtility.singleLineHeight + 2; 130 | rect4.y += EditorGUIUtility.singleLineHeight + 2; 131 | rect5.y += EditorGUIUtility.singleLineHeight + 2; 132 | EditorGUI.LabelField(rect2, style.assetReferenceAsset); 133 | EditorGUI.BeginChangeCheck(); 134 | info.assetFolder = EditorGUI.TextField(rect3, info.assetFolder); 135 | info.assetFolder = OnDrawElementAcceptDrop(rect3, info.assetFolder); 136 | valueChanged |= EditorGUI.EndChangeCheck(); 137 | if (GUI.Button(rect4, style.assetReferenceCheckDup)) 138 | { 139 | AssetDanshariSetting.SaveSetting(); 140 | DisplayDuplicateWindow(info.referenceFolder, info.assetFolder, info.assetCommonFolder); 141 | } 142 | if (GUI.Button(rect5, style.assetReferenceDepend)) 143 | { 144 | AssetDanshariSetting.SaveSetting(); 145 | DisplayDependenciesWindow(info.referenceFolder, info.assetFolder, info.assetCommonFolder); 146 | } 147 | 148 | rect2.y += EditorGUIUtility.singleLineHeight + 2; 149 | rect3.y += EditorGUIUtility.singleLineHeight + 2; 150 | rect3.width = rect.width - rect2.width; 151 | EditorGUI.LabelField(rect2, style.assetReferenceAssetCommon); 152 | EditorGUI.BeginChangeCheck(); 153 | info.assetCommonFolder = EditorGUI.TextField(rect3, info.assetCommonFolder); 154 | info.assetCommonFolder = OnDrawElementAcceptDrop(rect3, info.assetCommonFolder); 155 | valueChanged |= EditorGUI.EndChangeCheck(); 156 | } 157 | 158 | private string OnDrawElementAcceptDrop(Rect rect, string label) 159 | { 160 | if (rect.Contains(Event.current.mousePosition)) 161 | { 162 | if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0 && !string.IsNullOrEmpty(DragAndDrop.paths[0])) 163 | { 164 | if (Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragPerform) 165 | { 166 | DragAndDrop.visualMode = DragAndDropVisualMode.Copy; 167 | } 168 | 169 | if (Event.current.type == EventType.DragPerform) 170 | { 171 | DragAndDrop.AcceptDrag(); 172 | GUI.changed = true; 173 | 174 | // 安装ctrl表示添加 175 | if (Event.current.modifiers == EventModifiers.Control) 176 | { 177 | var labels = AssetDanshariUtility.PathStrToArray(label); 178 | ArrayUtility.AddRange(ref labels, DragAndDrop.paths); 179 | return AssetDanshariUtility.PathArrayToStr(labels); 180 | } 181 | else 182 | { 183 | return AssetDanshariUtility.PathArrayToStr(DragAndDrop.paths); 184 | } 185 | } 186 | } 187 | } 188 | 189 | return label; 190 | } 191 | 192 | /// 193 | /// 显示引用查找窗口 194 | /// 195 | /// 引用的文件、目录集合 196 | /// 资源的文件、目录集合 197 | /// 公共资源目录集合 198 | public static void DisplayReferenceWindow(string refPaths, string resPaths, string commonPaths = "") 199 | { 200 | AssetBaseWindow.CheckPaths(refPaths, resPaths, commonPaths, AssetDanshariSetting.Get().ripgrepPath); 201 | } 202 | 203 | /// 204 | /// 显示被引用查找窗口 205 | /// 206 | public static void DisplayDependenciesWindow(string refPaths, string resPaths, string commonPaths = "") 207 | { 208 | AssetBaseWindow.CheckPaths(refPaths, resPaths, commonPaths, AssetDanshariSetting.Get().ripgrepPath); 209 | } 210 | 211 | /// 212 | /// 显示重复资源检查窗口 213 | /// 214 | public static void DisplayDuplicateWindow(string refPaths, string resPaths, string commonPaths = "") 215 | { 216 | AssetBaseWindow.CheckPaths(refPaths, resPaths, commonPaths, AssetDanshariSetting.Get().ripgrepPath); 217 | } 218 | } 219 | } -------------------------------------------------------------------------------- /Editor/AssetDanshariWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5600d2f2c9f4ab40bb0cad5d9d80d8b 3 | timeCreated: 1536131211 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/DependenciesWindow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d61463566d029f4b964a47afc083350 3 | folderAsset: yes 4 | timeCreated: 1536578901 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Editor/DependenciesWindow/AssetDependenciesTreeModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace AssetDanshari 7 | { 8 | public class AssetDependenciesTreeModel : AssetTreeModel 9 | { 10 | public override void SetDataPaths(string refPathStr, string pathStr, string commonPathStr, string grepPath) 11 | { 12 | base.SetDataPaths(refPathStr, pathStr, commonPathStr, grepPath); 13 | 14 | var resFileList = GetResFileList(); 15 | var guidList = GetGuidFromFileList(resFileList); 16 | var fileList = GetRefFileList(); 17 | var refGuidMap = GetGuidMapFromFileList(fileList); 18 | var searchRetList = GetSearchResultList(fileList.Count, guidList.Count); 19 | 20 | ThreadDoFilesTextSearchReplace(grepPath, refPaths, fileList, refGuidMap, guidList, String.Empty, searchRetList); 21 | var rootInfo = DirToAssetInfoTree(resPaths); 22 | var resInfos = FileListToAssetInfos(resFileList); 23 | 24 | // 根据搜索结果来挂载额外信息 25 | for (int i = 0; i < fileList.Count; i++) 26 | { 27 | for (int j = 0; j < guidList.Count; j++) 28 | { 29 | if (searchRetList[i][j]) 30 | { 31 | AssetInfo info = GenAssetInfo(fileList[i]); 32 | info.isExtra = true; 33 | resInfos[j].AddChild(info); 34 | } 35 | } 36 | } 37 | 38 | if (AssetDanshariHandler.onDependenciesLoadDataMore != null) 39 | { 40 | AssetDanshariHandler.onDependenciesLoadDataMore(pathStr, resInfos, this); 41 | } 42 | 43 | MergeAssetInfo(rootInfo, resInfos); 44 | 45 | if (rootInfo.hasChildren) 46 | { 47 | data = rootInfo; 48 | } 49 | EditorUtility.ClearProgressBar(); 50 | } 51 | 52 | public override void ExportCsv() 53 | { 54 | string path = AssetDanshariUtility.GetSaveFilePath(typeof(AssetDependenciesWindow).Name); 55 | if (string.IsNullOrEmpty(path)) 56 | { 57 | return; 58 | } 59 | 60 | var style = AssetDanshariStyle.Get(); 61 | var sb = new StringBuilder(); 62 | sb.AppendFormat("\"{0}\",", style.nameHeaderContent.text); 63 | sb.AppendFormat("\"{0}\"\n", style.dependenciesHeaderContent2.text); 64 | 65 | foreach (var info in data.children) 66 | { 67 | ExportCsvDataDir(info, sb, "├"); 68 | } 69 | 70 | AssetDanshariUtility.SaveFileText(path, sb.ToString()); 71 | GUIUtility.ExitGUI(); 72 | } 73 | 74 | private void ExportCsvDataDir(AssetInfo assetInfo, StringBuilder sb, string pre) 75 | { 76 | if (assetInfo.isExtra) 77 | { 78 | sb.AppendFormat(",\"{0}\"\n", assetInfo.displayName); 79 | } 80 | else if (assetInfo.isFolder) 81 | { 82 | sb.AppendLine(pre + assetInfo.displayName); 83 | } 84 | else 85 | { 86 | sb.AppendFormat("\"{0}\"", pre + assetInfo.displayName); 87 | if (assetInfo.hasChildren && assetInfo.children.Count > 0) 88 | { 89 | sb.AppendFormat(",\"{0}\"", assetInfo.children.Count.ToString()); 90 | } 91 | sb.AppendLine(); 92 | } 93 | 94 | if (assetInfo.hasChildren) 95 | { 96 | foreach (var childInfo in assetInfo.children) 97 | { 98 | ExportCsvDataDir(childInfo, sb, pre + pre); 99 | } 100 | } 101 | } 102 | } 103 | } -------------------------------------------------------------------------------- /Editor/DependenciesWindow/AssetDependenciesTreeModel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: adf0337d4ce04ec6840865e1b9482c4c 3 | timeCreated: 1536627576 -------------------------------------------------------------------------------- /Editor/DependenciesWindow/AssetDependenciesTreeView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | using UnityEditor.IMGUI.Controls; 6 | 7 | namespace AssetDanshari 8 | { 9 | public class AssetDependenciesTreeView : AssetTreeView 10 | { 11 | private AssetDependenciesTreeModel model { get; set; } 12 | 13 | public AssetDependenciesTreeView(TreeViewState state, MultiColumnHeader multiColumnHeader, AssetTreeModel model) : base(state, multiColumnHeader, model) 14 | { 15 | this.model = model as AssetDependenciesTreeModel; 16 | AssetDanshariHandler.onDependenciesFindItem += OnDependenciesFindItem; 17 | } 18 | 19 | public override void Destroy() 20 | { 21 | base.Destroy(); 22 | AssetDanshariHandler.onDependenciesFindItem -= OnDependenciesFindItem; 23 | } 24 | 25 | protected override void CellGUI(Rect cellRect, AssetTreeViewItem item, int column, ref RowGUIArgs args) 26 | { 27 | var info = item.data; 28 | 29 | switch (column) 30 | { 31 | case 0: 32 | if (!info.isExtra) 33 | { 34 | DrawItemWithIcon(cellRect, item, ref args, info.displayName, info.fileRelativePath, info.deleted, info.added); 35 | } 36 | break; 37 | case 1: 38 | if (info.isExtra) 39 | { 40 | DrawItemWithIcon(cellRect, item, ref args, info.displayName, info.fileRelativePath, info.deleted, info.added, false); 41 | } 42 | else 43 | { 44 | if (!info.isFolder && info.hasChildren && info.children.Count > 0) 45 | { 46 | DefaultGUI.Label(cellRect, info.children.Count.ToString(), args.selected, args.focused); 47 | } 48 | } 49 | break; 50 | } 51 | } 52 | 53 | protected override bool CanMultiSelect(TreeViewItem item) 54 | { 55 | return true; 56 | } 57 | 58 | protected override void ContextClickedItem(int id) 59 | { 60 | var item = FindItem(id, rootItem); 61 | var assetInfo = GetItemAssetInfo(item); 62 | if (item == null || assetInfo == null || assetInfo.deleted) 63 | { 64 | return; 65 | } 66 | 67 | GenericMenu menu = new GenericMenu(); 68 | if (!IsSelectionMulti()) 69 | { 70 | menu.AddItem(AssetDanshariStyle.Get().locationContext, false, OnContextSetActiveItem, id); 71 | menu.AddItem(AssetDanshariStyle.Get().explorerContext, false, OnContextExplorerActiveItem, item); 72 | } 73 | 74 | if (!IsSelectionContainsReverseItem()) 75 | { 76 | menu.AddSeparator(String.Empty); 77 | AddContextMoveComm(menu); 78 | menu.AddSeparator(String.Empty); 79 | menu.AddItem(AssetDanshariStyle.Get().dependenciesDelete, false, OnContextDeleteThisItem); 80 | 81 | if (AssetDanshariHandler.onDependenciesContextDraw != null) 82 | { 83 | AssetDanshariHandler.onDependenciesContextDraw(menu); 84 | } 85 | } 86 | 87 | if (menu.GetItemCount() > 0) 88 | { 89 | menu.ShowAsContext(); 90 | } 91 | } 92 | 93 | private void OnContextDeleteThisItem() 94 | { 95 | if (!HasSelection()) 96 | { 97 | return; 98 | } 99 | 100 | var style = AssetDanshariStyle.Get(); 101 | if (!EditorUtility.DisplayDialog(String.Empty, style.sureStr + style.dependenciesDelete.text, 102 | style.sureStr, style.cancelStr)) 103 | { 104 | return; 105 | } 106 | 107 | var selects = GetSelection(); 108 | foreach (var select in selects) 109 | { 110 | var assetInfo = GetItemAssetInfo(FindItem(select, rootItem)); 111 | if (assetInfo == null || assetInfo.deleted) 112 | { 113 | continue; 114 | } 115 | 116 | if (AssetDatabase.DeleteAsset(assetInfo.fileRelativePath)) 117 | { 118 | assetInfo.deleted = true; 119 | } 120 | } 121 | Repaint(); 122 | } 123 | 124 | public void SetFilterEmpty(bool filterEmpty) 125 | { 126 | Reload(); 127 | if (filterEmpty) 128 | { 129 | // 剔除有被引用的 130 | SetFilterEmptyStay(rootItem); 131 | } 132 | ForceRefresh(); 133 | Repaint(); 134 | } 135 | 136 | private void SetFilterEmptyStay(TreeViewItem item) 137 | { 138 | var assetInfo = GetItemAssetInfo(item); 139 | if (assetInfo == null) 140 | { 141 | if (item.hasChildren) 142 | { 143 | for (var i = item.children.Count - 1; i >= 0; i--) 144 | { 145 | var child = item.children[i]; 146 | SetFilterEmptyStay(child); 147 | } 148 | } 149 | return; 150 | } 151 | 152 | if (!assetInfo.isFolder && assetInfo.hasChildren && assetInfo.children.Count > 0) 153 | { 154 | item.parent.children.Remove(item); 155 | item.parent = null; 156 | return; 157 | } 158 | 159 | if (assetInfo.isFolder && item.hasChildren) 160 | { 161 | for (var i = item.children.Count - 1; i >= 0; i--) 162 | { 163 | var child = item.children[i]; 164 | SetFilterEmptyStay(child); 165 | } 166 | } 167 | } 168 | 169 | private void OnDependenciesFindItem(string assetPath) 170 | { 171 | var item = FindItemByAssetPath(rootItem, assetPath); 172 | if (item != null) 173 | { 174 | SetSelection(new List() { item.id }, TreeViewSelectionOptions.RevealAndFrame); 175 | Repaint(); 176 | } 177 | } 178 | } 179 | } -------------------------------------------------------------------------------- /Editor/DependenciesWindow/AssetDependenciesTreeView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f92ec5d1ed904a90aa650f752883bd40 3 | timeCreated: 1536627591 -------------------------------------------------------------------------------- /Editor/DependenciesWindow/AssetDependenciesWindow.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEditor.IMGUI.Controls; 3 | using UnityEngine; 4 | 5 | namespace AssetDanshari 6 | { 7 | public class AssetDependenciesWindow : AssetBaseWindow 8 | { 9 | private bool m_FilterEmpty; 10 | 11 | private void Awake() 12 | { 13 | titleContent = AssetDanshariStyle.Get().dependenciesTitle; 14 | minSize = new Vector2(727f, 331f); 15 | } 16 | 17 | protected override void InitTree(MultiColumnHeader multiColumnHeader) 18 | { 19 | m_FilterEmpty = false; 20 | m_AssetTreeModel = new AssetDependenciesTreeModel(); 21 | m_AssetTreeView = new AssetDependenciesTreeView(m_TreeViewState, multiColumnHeader, m_AssetTreeModel); 22 | } 23 | 24 | protected override void DrawGUI(GUIContent waiting, GUIContent nothing, bool expandCollapseComplex) 25 | { 26 | base.DrawGUI(AssetDanshariStyle.Get().dependenciesWaiting, AssetDanshariStyle.Get().dependenciesNothing, true); 27 | } 28 | 29 | protected override MultiColumnHeaderState CreateMultiColumnHeader() 30 | { 31 | var columns = new[] 32 | { 33 | new MultiColumnHeaderState.Column 34 | { 35 | headerContent = AssetDanshariStyle.Get().nameHeaderContent, 36 | headerTextAlignment = TextAlignment.Left, 37 | canSort = false, 38 | sortingArrowAlignment = TextAlignment.Right, 39 | width = 280, 40 | minWidth = 150, 41 | autoResize = false, 42 | allowToggleVisibility = false 43 | }, 44 | new MultiColumnHeaderState.Column 45 | { 46 | headerContent = AssetDanshariStyle.Get().dependenciesHeaderContent2, 47 | headerTextAlignment = TextAlignment.Left, 48 | canSort = false, 49 | width = 350, 50 | minWidth = 100, 51 | autoResize = false, 52 | allowToggleVisibility = true 53 | } 54 | }; 55 | 56 | return new MultiColumnHeaderState(columns); 57 | } 58 | 59 | protected override void DrawToolbarMore() 60 | { 61 | EditorGUI.BeginChangeCheck(); 62 | m_FilterEmpty = GUILayout.Toggle(m_FilterEmpty, AssetDanshariStyle.Get().dependenciesFilter, EditorStyles.toolbarButton, 63 | GUILayout.Width(70f)); 64 | if (EditorGUI.EndChangeCheck() && m_AssetTreeView != null) 65 | { 66 | (m_AssetTreeView as AssetDependenciesTreeView).SetFilterEmpty(m_FilterEmpty); 67 | } 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /Editor/DependenciesWindow/AssetDependenciesWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0948e166238b0a4488240c638e120e4 3 | timeCreated: 1536578915 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/DuplicateWindow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d66e22487145498887ecdd037bc2702d 3 | timeCreated: 1536403217 -------------------------------------------------------------------------------- /Editor/DuplicateWindow/AssetDuplicateTreeModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using UnityEditor; 7 | using UnityEngine; 8 | 9 | namespace AssetDanshari 10 | { 11 | public class AssetDuplicateTreeModel : AssetTreeModel 12 | { 13 | public class FileSimpleInfo 14 | { 15 | public FileInfo fileInfo; 16 | public long fileSize; 17 | public string filePath; 18 | 19 | /// 20 | /// 界面用文件大小 21 | /// 22 | public string fileLength; 23 | 24 | /// 25 | /// 创建时间 26 | /// 27 | public string fileTime; 28 | } 29 | 30 | private class DuplicateFileGroup 31 | { 32 | public long size { get; } 33 | public List files { get; } 34 | 35 | public DuplicateFileGroup(long fileSize, List fileList) 36 | { 37 | size = fileSize; 38 | files = fileList; 39 | } 40 | } 41 | 42 | public override void SetDataPaths(string refPathStr, string pathStr, string commonPathStr, string grepPath) 43 | { 44 | base.SetDataPaths(refPathStr, pathStr, commonPathStr, grepPath); 45 | var style = AssetDanshariStyle.Get(); 46 | 47 | var resFileList = GetResFileList(); 48 | var duplicateFileGroups = GetDuplicateFileGroupInfo(resFileList); 49 | if (duplicateFileGroups == null || duplicateFileGroups.Count == 0) 50 | { 51 | EditorUtility.ClearProgressBar(); 52 | return; 53 | } 54 | 55 | var rootInfo = new AssetInfo(GetAutoId(), String.Empty, String.Empty); 56 | foreach (var group in duplicateFileGroups) 57 | { 58 | AssetInfo dirInfo = new AssetInfo(GetAutoId(), String.Empty, String.Format(style.duplicateGroup, group.files.Count)); 59 | dirInfo.isExtra = true; 60 | rootInfo.AddChild(dirInfo); 61 | 62 | foreach (var member in group.files) 63 | { 64 | dirInfo.AddChild(GetAssetInfoByFileInfo(member)); 65 | } 66 | } 67 | 68 | if (rootInfo.hasChildren) 69 | { 70 | data = rootInfo; 71 | } 72 | EditorUtility.ClearProgressBar(); 73 | } 74 | 75 | private const int kBufferSize = 1 * 1024 * 1024; 76 | 77 | private List GetDuplicateFileGroupInfo(List fileArray) 78 | { 79 | List duplicateFileGroups = new List(); 80 | 81 | var fileList = new List(); 82 | 83 | foreach (var file in fileArray) 84 | { 85 | // 大小为0的不考虑重复 86 | FileInfo fileInfo = new FileInfo(file); 87 | if (fileInfo.Length > 0) 88 | { 89 | FileSimpleInfo info = new FileSimpleInfo 90 | { 91 | fileSize = fileInfo.Length, 92 | fileInfo = fileInfo 93 | }; 94 | fileList.Add(info); 95 | } 96 | } 97 | 98 | if (fileList.Count == 0) 99 | { 100 | return duplicateFileGroups; 101 | } 102 | 103 | // https://github.com/cemahseri/Duplica 104 | var groups = fileList.GroupBy(info => info.fileSize).Where(g => g.Count() > 1); 105 | foreach (var group in groups) 106 | { 107 | DuplicateFileGroup duplicateFileGroup = new DuplicateFileGroup(group.Key, new List()); 108 | var duplicateFiles = duplicateFileGroup.files; 109 | duplicateFileGroups.Add(duplicateFileGroup); 110 | 111 | foreach (var member in group) 112 | { 113 | duplicateFiles.Add(member); 114 | } 115 | } 116 | 117 | var buffer = new byte[kBufferSize]; 118 | for (var dupIndex = 0; dupIndex < duplicateFileGroups.Count; dupIndex++) 119 | { 120 | var duplicateFileGroup = duplicateFileGroups[dupIndex]; 121 | AssetDanshariUtility.DisplayThreadProgressBar(duplicateFileGroups.Count, dupIndex); 122 | 123 | var numberOfChunks = duplicateFileGroup.size / kBufferSize; 124 | 125 | for (long chunk = 0; chunk <= numberOfChunks; chunk++) 126 | { 127 | var hashes = new Dictionary>(); 128 | 129 | foreach (var fileSimpleInfo in duplicateFileGroup.files) 130 | { 131 | fileSimpleInfo.filePath = fileSimpleInfo.fileInfo.FullName; 132 | 133 | using (FileStream stream = new FileStream(fileSimpleInfo.filePath, FileMode.Open, 134 | FileAccess.Read, FileShare.Read, kBufferSize, FileOptions.SequentialScan)) 135 | { 136 | if (!stream.CanRead) 137 | { 138 | continue; 139 | } 140 | 141 | if (!stream.CanSeek) 142 | { 143 | continue; 144 | } 145 | 146 | stream.Seek(chunk * kBufferSize, SeekOrigin.Begin); 147 | 148 | Array.Clear(buffer, 0, kBufferSize); 149 | 150 | int len = stream.Read(buffer, 0, kBufferSize); 151 | 152 | #if UNITY_2020_1_OR_NEWER 153 | var hash = Hash128.Compute(buffer, 0, len); 154 | #else 155 | var hash = Hash128.Compute(Convert.ToBase64String(buffer, 0, len)); 156 | #endif 157 | 158 | if (!hashes.ContainsKey(hash)) 159 | { 160 | hashes.Add(hash, new List()); 161 | } 162 | 163 | hashes[hash].Add(fileSimpleInfo); 164 | } 165 | } 166 | 167 | foreach (var fileSimpleInfo in hashes.Values.Where(f => f.Count == 1).SelectMany(a => a)) 168 | { 169 | duplicateFileGroup.files.Remove(fileSimpleInfo); 170 | } 171 | } 172 | } 173 | 174 | for (int i = duplicateFileGroups.Count - 1; i >= 0; i--) 175 | { 176 | if (duplicateFileGroups[i].files.Count <= 1) 177 | { 178 | duplicateFileGroups.RemoveAt(i); 179 | } 180 | } 181 | 182 | return duplicateFileGroups; 183 | } 184 | 185 | private AssetInfo GetAssetInfoByFileInfo(FileSimpleInfo fileInfo) 186 | { 187 | AssetInfo info = GenAssetInfo(FullPathToRelative(fileInfo.filePath)); 188 | info.bindObj = fileInfo; 189 | 190 | if (fileInfo.fileSize >= (1 << 20)) 191 | { 192 | fileInfo.fileLength = string.Format("{0:F} MB", fileInfo.fileSize / 1024f / 1024f); 193 | } 194 | else if (fileInfo.fileSize >= (1 << 10)) 195 | { 196 | fileInfo.fileLength = string.Format("{0:F} KB", fileInfo.fileSize / 1024f); 197 | } 198 | else 199 | { 200 | fileInfo.fileLength = string.Format("{0:F} B", fileInfo.fileSize); 201 | } 202 | 203 | fileInfo.fileTime = fileInfo.fileInfo.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"); 204 | fileInfo.fileInfo = null; 205 | 206 | return info; 207 | } 208 | 209 | /// 210 | /// 去引用到的目录查找所有用到的guid,批量更改 211 | /// 212 | /// 213 | /// 214 | public void SetUseThis(AssetInfo group, AssetInfo useInfo) 215 | { 216 | var style = AssetDanshariStyle.Get(); 217 | if (!EditorUtility.DisplayDialog(String.Empty, style.sureStr + style.duplicateContextOnlyUseThis.text, 218 | style.sureStr, style.cancelStr)) 219 | { 220 | return; 221 | } 222 | 223 | List patterns = new List(); 224 | foreach (var info in group.children) 225 | { 226 | if (info != useInfo) 227 | { 228 | patterns.Add(AssetDatabase.AssetPathToGUID(info.fileRelativePath)); 229 | } 230 | } 231 | 232 | string replaceStr = AssetDatabase.AssetPathToGUID(useInfo.fileRelativePath); 233 | List fileList = GetRefFileList(); 234 | var refGuidMap = GetGuidMapFromFileList(fileList); 235 | 236 | ThreadDoFilesTextSearchReplace(grepPath, refPaths, fileList, refGuidMap, patterns, replaceStr, GetSearchResultList(fileList.Count, 0)); 237 | EditorUtility.DisplayProgressBar(style.progressTitle, style.deleteFile, 0.98f); 238 | SetRemoveAllOther(group, useInfo); 239 | EditorUtility.ClearProgressBar(); 240 | EditorUtility.DisplayDialog(String.Empty, style.progressFinish, style.sureStr); 241 | } 242 | 243 | private void SetRemoveAllOther(AssetInfo group, AssetInfo selectInfo) 244 | { 245 | foreach (var info in group.children) 246 | { 247 | if (info != selectInfo && !info.deleted) 248 | { 249 | if (AssetDatabase.DeleteAsset(info.fileRelativePath)) 250 | { 251 | info.deleted = true; 252 | } 253 | } 254 | } 255 | } 256 | 257 | /// 258 | /// 手动添加数据 259 | /// 260 | /// 261 | public int AddManualData(string[] filePaths) 262 | { 263 | var fileList = new List(); 264 | 265 | foreach (var file in filePaths) 266 | { 267 | if (!string.IsNullOrEmpty(file)) 268 | { 269 | FileInfo fileInfo = new FileInfo(file); 270 | FileSimpleInfo info = new FileSimpleInfo 271 | { 272 | fileSize = fileInfo.Length, 273 | filePath = fileInfo.FullName, 274 | fileInfo = fileInfo 275 | }; 276 | fileList.Add(info); 277 | } 278 | } 279 | 280 | if (fileList.Count < 2 || !HasData()) 281 | { 282 | EditorUtility.ClearProgressBar(); 283 | return 0; 284 | } 285 | 286 | var style = AssetDanshariStyle.Get(); 287 | AssetInfo dirInfo = new AssetInfo(GetAutoId(), String.Empty, String.Format(style.duplicateGroup, fileList.Count)); 288 | dirInfo.isExtra = true; 289 | data.AddChild(dirInfo); 290 | 291 | foreach (var member in fileList) 292 | { 293 | dirInfo.AddChild(GetAssetInfoByFileInfo(member)); 294 | } 295 | EditorUtility.ClearProgressBar(); 296 | return dirInfo.children[dirInfo.children.Count - 1].id; 297 | } 298 | 299 | public override void ExportCsv() 300 | { 301 | string path = AssetDanshariUtility.GetSaveFilePath(typeof(AssetDuplicateWindow).Name); 302 | if (string.IsNullOrEmpty(path)) 303 | { 304 | return; 305 | } 306 | 307 | var style = AssetDanshariStyle.Get(); 308 | var sb = new StringBuilder(); 309 | sb.AppendFormat("\"{0}\",", style.duplicateHeaderContent.text); 310 | sb.AppendFormat("\"{0}\",", style.duplicateHeaderContent2.text); 311 | sb.AppendFormat("\"{0}\",", style.duplicateHeaderContent3.text); 312 | sb.AppendFormat("\"{0}\"\n", style.duplicateHeaderContent4.text); 313 | 314 | foreach (var group in data.children) 315 | { 316 | sb.AppendLine(String.Format(style.duplicateGroup, group.displayName)); 317 | 318 | foreach (var info in group.children) 319 | { 320 | sb.AppendFormat("\"{0}\",", info.displayName); 321 | sb.AppendFormat("\"{0}\",", info.fileRelativePath); 322 | 323 | FileSimpleInfo simpleInfo = info.bindObj as FileSimpleInfo; 324 | sb.AppendFormat("\"{0}\",", simpleInfo.fileLength); 325 | sb.AppendFormat("\"{0}\"\n", simpleInfo.fileTime); 326 | } 327 | } 328 | 329 | AssetDanshariUtility.SaveFileText(path, sb.ToString()); 330 | GUIUtility.ExitGUI(); 331 | } 332 | } 333 | } -------------------------------------------------------------------------------- /Editor/DuplicateWindow/AssetDuplicateTreeModel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6648bc3e53c2104e80d33df7e0480e0 3 | timeCreated: 1536135231 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/DuplicateWindow/AssetDuplicateTreeView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEditor; 3 | using UnityEditor.IMGUI.Controls; 4 | using UnityEngine; 5 | 6 | namespace AssetDanshari 7 | { 8 | public class AssetDuplicateTreeView : AssetTreeView 9 | { 10 | private AssetDuplicateTreeModel model { get; set; } 11 | 12 | public AssetDuplicateTreeView(TreeViewState state, MultiColumnHeader multiColumnHeader, AssetTreeModel model) : base(state, multiColumnHeader, model) 13 | { 14 | this.model = model as AssetDuplicateTreeModel; 15 | } 16 | 17 | protected override void CellGUI(Rect cellRect, AssetTreeViewItem item, int column, ref RowGUIArgs args) 18 | { 19 | var info = item.data; 20 | if (info.isExtra) 21 | { 22 | if (column == 0) 23 | { 24 | DefaultGUI.Label(cellRect, info.displayName, args.selected, args.focused); 25 | } 26 | return; 27 | } 28 | 29 | AssetDuplicateTreeModel.FileSimpleInfo simpleInfo = info.bindObj as AssetDuplicateTreeModel.FileSimpleInfo; 30 | switch (column) 31 | { 32 | case 0: 33 | DrawItemWithIcon(cellRect, item, ref args, info.displayName, info.fileRelativePath, info.deleted, info.added, false, true); 34 | break; 35 | case 1: 36 | DefaultGUI.Label(cellRect, info.fileRelativePath, args.selected, args.focused); 37 | break; 38 | case 2: 39 | DefaultGUI.Label(cellRect, simpleInfo.fileLength, args.selected, args.focused); 40 | break; 41 | case 3: 42 | DefaultGUI.Label(cellRect, simpleInfo.fileTime, args.selected, args.focused); 43 | break; 44 | } 45 | } 46 | 47 | protected override bool CanMultiSelect(TreeViewItem item) 48 | { 49 | return false; 50 | } 51 | 52 | protected override void ContextClickedItem(int id) 53 | { 54 | var item = FindItem(id, rootItem) as AssetTreeViewItem; 55 | if (item == null || item.data.deleted || item.data.isExtra) 56 | { 57 | return; 58 | } 59 | 60 | GenericMenu menu = new GenericMenu(); 61 | menu.AddItem(AssetDanshariStyle.Get().locationContext, false, OnContextSetActiveItem, id); 62 | menu.AddItem(AssetDanshariStyle.Get().explorerContext, false, OnContextExplorerActiveItem, item); 63 | menu.AddSeparator(String.Empty); 64 | AddContextMoveComm(menu); 65 | menu.AddItem(AssetDanshariStyle.Get().dependenciesTitle, false, OnContextFindDependenciesActiveItem, item); 66 | menu.AddSeparator(String.Empty); 67 | menu.AddItem(AssetDanshariStyle.Get().duplicateContextOnlyUseThis, false, OnContextUseThisItem, item); 68 | menu.ShowAsContext(); 69 | } 70 | 71 | private void OnContextUseThisItem(object userdata) 72 | { 73 | var item = userdata as AssetTreeViewItem; 74 | if (item != null) 75 | { 76 | var itemParent = item.parent as AssetTreeViewItem; 77 | model.SetUseThis(itemParent.data, item.data); 78 | Repaint(); 79 | } 80 | } 81 | 82 | private void OnContextFindDependenciesActiveItem(object userdata) 83 | { 84 | var item = userdata as AssetTreeViewItem; 85 | if (item != null) 86 | { 87 | if (AssetDanshariHandler.onDependenciesFindItem != null) 88 | { 89 | AssetDanshariHandler.onDependenciesFindItem(item.data.fileRelativePath); 90 | } 91 | } 92 | } 93 | 94 | #region 数据变化 95 | 96 | protected override bool OnWatcherImportedAssetsEvent(string[] importedAssets, bool resortItem) 97 | { 98 | return base.OnWatcherImportedAssetsEvent(importedAssets, false); 99 | } 100 | 101 | protected override bool OnWatcherMovedAssetsEvent(string[] movedFromAssetPaths, string[] movedAssets, bool resortItem) 102 | { 103 | return base.OnWatcherMovedAssetsEvent(movedFromAssetPaths, movedAssets, false); 104 | } 105 | 106 | #endregion 107 | } 108 | } -------------------------------------------------------------------------------- /Editor/DuplicateWindow/AssetDuplicateTreeView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 20d4952fb3e493048a1beb6790254dd5 3 | timeCreated: 1536136430 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/DuplicateWindow/AssetDuplicateWindow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | using UnityEditor.IMGUI.Controls; 6 | 7 | namespace AssetDanshari 8 | { 9 | public class AssetDuplicateWindow : AssetBaseWindow 10 | { 11 | private bool m_ManualAdd; 12 | private string[] m_ManualPaths = new string[5]; 13 | 14 | private void Awake() 15 | { 16 | titleContent = AssetDanshariStyle.Get().duplicateTitle; 17 | minSize = new Vector2(727f, 331f); 18 | } 19 | 20 | protected override void InitTree(MultiColumnHeader multiColumnHeader) 21 | { 22 | m_AssetTreeModel = new AssetDuplicateTreeModel(); 23 | m_AssetTreeView = new AssetDuplicateTreeView(m_TreeViewState, multiColumnHeader, m_AssetTreeModel); 24 | } 25 | 26 | protected override void DrawGUI(GUIContent waiting, GUIContent nothing, bool expandCollapseComplex) 27 | { 28 | if (m_ManualAdd) 29 | { 30 | DrawManualAdd(); 31 | } 32 | else 33 | { 34 | base.DrawGUI(AssetDanshariStyle.Get().duplicateWaiting, AssetDanshariStyle.Get().duplicateNothing, false); 35 | } 36 | } 37 | 38 | protected override MultiColumnHeaderState CreateMultiColumnHeader() 39 | { 40 | var columns = new[] 41 | { 42 | new MultiColumnHeaderState.Column 43 | { 44 | headerContent = AssetDanshariStyle.Get().duplicateHeaderContent, 45 | headerTextAlignment = TextAlignment.Left, 46 | canSort = false, 47 | sortingArrowAlignment = TextAlignment.Right, 48 | width = 200, 49 | minWidth = 150, 50 | autoResize = false, 51 | allowToggleVisibility = false 52 | }, 53 | new MultiColumnHeaderState.Column 54 | { 55 | headerContent = AssetDanshariStyle.Get().duplicateHeaderContent2, 56 | headerTextAlignment = TextAlignment.Left, 57 | canSort = false, 58 | width = 300, 59 | minWidth = 100, 60 | autoResize = false, 61 | allowToggleVisibility = true 62 | }, 63 | new MultiColumnHeaderState.Column 64 | { 65 | headerContent = AssetDanshariStyle.Get().duplicateHeaderContent3, 66 | headerTextAlignment = TextAlignment.Left, 67 | canSort = false, 68 | width = 60, 69 | minWidth = 60, 70 | autoResize = false, 71 | allowToggleVisibility = true 72 | }, 73 | new MultiColumnHeaderState.Column 74 | { 75 | headerContent = AssetDanshariStyle.Get().duplicateHeaderContent4, 76 | headerTextAlignment = TextAlignment.Left, 77 | canSort = false, 78 | width = 110, 79 | minWidth = 60, 80 | autoResize = true 81 | } 82 | }; 83 | 84 | return new MultiColumnHeaderState(columns); 85 | } 86 | 87 | protected override void DrawToolbarMore() 88 | { 89 | if (GUILayout.Button(AssetDanshariStyle.Get().duplicateManualAdd, EditorStyles.toolbarButton, GUILayout.Width(70f))) 90 | { 91 | m_ManualAdd = true; 92 | } 93 | } 94 | 95 | private void DrawManualAdd() 96 | { 97 | var style = AssetDanshariStyle.Get(); 98 | EditorGUILayout.LabelField(style.duplicateManualAdd); 99 | EditorGUI.indentLevel++; 100 | for (int i = 0; i < m_ManualPaths.Length; i++) 101 | { 102 | Rect textRect = GUILayoutUtility.GetRect(GUIContent.none, EditorStyles.textField, GUILayout.ExpandWidth(true)); 103 | m_ManualPaths[i] = EditorGUI.TextField(textRect, style.duplicateHeaderContent2, m_ManualPaths[i]); 104 | m_ManualPaths[i] = OnDrawElementAcceptDrop(textRect, m_ManualPaths[i]); 105 | } 106 | 107 | EditorGUILayout.BeginHorizontal(); 108 | if (GUILayout.Button(style.sureStr)) 109 | { 110 | int id = (m_AssetTreeModel as AssetDuplicateTreeModel).AddManualData(m_ManualPaths); 111 | if (id > 0) 112 | { 113 | Array.Clear(m_ManualPaths, 0, m_ManualPaths.Length); 114 | m_AssetTreeView.Reload(); 115 | m_AssetTreeView.ForceRefresh(); 116 | m_AssetTreeView.SetSelection(new List() {id}, TreeViewSelectionOptions.RevealAndFrame); 117 | m_ManualAdd = false; 118 | } 119 | } 120 | if (GUILayout.Button(style.cancelStr)) 121 | { 122 | m_ManualAdd = false; 123 | } 124 | EditorGUILayout.EndHorizontal(); 125 | EditorGUI.indentLevel--; 126 | } 127 | 128 | private string OnDrawElementAcceptDrop(Rect rect, string label) 129 | { 130 | if (rect.Contains(Event.current.mousePosition)) 131 | { 132 | if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0 && !string.IsNullOrEmpty(DragAndDrop.paths[0])) 133 | { 134 | if (Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragPerform) 135 | { 136 | DragAndDrop.visualMode = DragAndDropVisualMode.Copy; 137 | } 138 | 139 | if (Event.current.type == EventType.DragPerform) 140 | { 141 | DragAndDrop.AcceptDrag(); 142 | 143 | if (!AssetDatabase.IsValidFolder(DragAndDrop.paths[0])) 144 | { 145 | GUI.changed = true; 146 | return DragAndDrop.paths[0]; 147 | } 148 | } 149 | } 150 | } 151 | 152 | return label; 153 | } 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /Editor/DuplicateWindow/AssetDuplicateWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e22f886b792fec745b4a0122daeb458e 3 | timeCreated: 1536198339 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/ReferenceWindow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f26609dd2e90490488991c309d7e5700 3 | folderAsset: yes 4 | timeCreated: 1536916082 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Editor/ReferenceWindow/AssetReferenceTreeModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace AssetDanshari 8 | { 9 | public class AssetReferenceTreeModel : AssetTreeModel 10 | { 11 | public override void SetDataPaths(string refPathStr, string pathStr, string commonPathStr, string grepPath) 12 | { 13 | base.SetDataPaths(refPathStr, pathStr, commonPathStr, grepPath); 14 | assetPaths = refPathStr; 15 | 16 | var resFileList = GetResFileList(); 17 | var guidList = GetGuidFromFileList(resFileList); 18 | var fileList = GetRefFileList(); 19 | var refGuidMap = GetGuidMapFromFileList(fileList); 20 | var searchRetList = GetSearchResultList(fileList.Count, guidList.Count); 21 | 22 | ThreadDoFilesTextSearchReplace(grepPath, refPaths, fileList, refGuidMap, guidList, String.Empty, searchRetList); 23 | var rootInfo = DirToAssetInfoTree(refPaths); 24 | var refInfos = FileListToAssetInfos(fileList); 25 | 26 | // 隶属信息 27 | var spritePackingDict = new Dictionary(); 28 | 29 | // 根据搜索结果来挂载额外信息 30 | for (int i = 0; i < fileList.Count; i++) 31 | { 32 | for (int j = 0; j < guidList.Count; j++) 33 | { 34 | if (searchRetList[i][j]) 35 | { 36 | AssetInfo info = GenAssetInfo(resFileList[j]); 37 | info.isExtra = true; 38 | refInfos[i].AddChild(info); 39 | 40 | // 隶属 41 | string val; 42 | if (!spritePackingDict.TryGetValue(info.fileRelativePath, out val)) 43 | { 44 | var assetImporter = AssetImporter.GetAtPath(info.fileRelativePath); 45 | TextureImporter textureImporter = assetImporter as TextureImporter; 46 | if (textureImporter) 47 | { 48 | #pragma warning disable CS0618 49 | val = textureImporter.spritePackingTag; 50 | spritePackingDict.Add(info.fileRelativePath, val); 51 | #pragma warning restore CS0618 52 | } 53 | } 54 | 55 | info.bindObj = val; 56 | } 57 | } 58 | } 59 | MergeAssetInfo(rootInfo, refInfos); 60 | 61 | if (rootInfo.hasChildren) 62 | { 63 | data = rootInfo; 64 | } 65 | EditorUtility.ClearProgressBar(); 66 | } 67 | 68 | public override void ExportCsv() 69 | { 70 | string path = AssetDanshariUtility.GetSaveFilePath(typeof(AssetDependenciesWindow).Name); 71 | if (string.IsNullOrEmpty(path)) 72 | { 73 | return; 74 | } 75 | 76 | var style = AssetDanshariStyle.Get(); 77 | var sb = new StringBuilder(); 78 | sb.AppendFormat("\"{0}\",", style.nameHeaderContent.text); 79 | sb.AppendFormat("\"{0}\"\n", style.dependenciesHeaderContent2.text); 80 | 81 | foreach (var info in data.children) 82 | { 83 | ExportCsvDataDir(info, sb, "├"); 84 | } 85 | 86 | AssetDanshariUtility.SaveFileText(path, sb.ToString()); 87 | GUIUtility.ExitGUI(); 88 | } 89 | 90 | private void ExportCsvDataDir(AssetInfo assetInfo, StringBuilder sb, string pre) 91 | { 92 | if (assetInfo.isExtra) 93 | { 94 | sb.AppendFormat(",\"{0}\"\n", assetInfo.displayName); 95 | } 96 | else if (assetInfo.isFolder) 97 | { 98 | sb.AppendLine(pre + assetInfo.displayName); 99 | } 100 | else 101 | { 102 | sb.AppendFormat("\"{0}\"", pre + assetInfo.displayName); 103 | if (assetInfo.hasChildren && assetInfo.children.Count > 0) 104 | { 105 | sb.AppendFormat(",\"{0}\"", assetInfo.children.Count.ToString()); 106 | } 107 | sb.AppendLine(); 108 | } 109 | 110 | if (assetInfo.hasChildren) 111 | { 112 | foreach (var childInfo in assetInfo.children) 113 | { 114 | ExportCsvDataDir(childInfo, sb, pre + pre); 115 | } 116 | } 117 | } 118 | } 119 | } -------------------------------------------------------------------------------- /Editor/ReferenceWindow/AssetReferenceTreeModel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 396d23b81236b82439e7cddca5c59005 3 | timeCreated: 1536916130 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/ReferenceWindow/AssetReferenceTreeView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEditor; 4 | using UnityEditor.IMGUI.Controls; 5 | 6 | namespace AssetDanshari 7 | { 8 | public class AssetReferenceTreeView : AssetTreeView 9 | { 10 | private AssetReferenceTreeModel model { get; set; } 11 | 12 | public AssetReferenceTreeView(TreeViewState state, MultiColumnHeader multiColumnHeader, AssetTreeModel model) : base(state, multiColumnHeader, model) 13 | { 14 | this.model = model as AssetReferenceTreeModel; 15 | } 16 | 17 | protected override void CellGUI(Rect cellRect, AssetTreeViewItem item, int column, ref RowGUIArgs args) 18 | { 19 | var info = item.data; 20 | 21 | switch (column) 22 | { 23 | case 0: 24 | if (!info.isExtra) 25 | { 26 | DrawItemWithIcon(cellRect, item, ref args, info.displayName, info.fileRelativePath, info.deleted, info.added); 27 | } 28 | break; 29 | case 1: 30 | if (info.isExtra) 31 | { 32 | DrawItemWithIcon(cellRect, item, ref args, info.displayName, info.fileRelativePath, info.deleted, info.added, false); 33 | } 34 | else 35 | { 36 | if (!info.isFolder && info.hasChildren && info.children.Count > 0) 37 | { 38 | DefaultGUI.Label(cellRect, info.children.Count.ToString(), args.selected, args.focused); 39 | } 40 | } 41 | break; 42 | case 2: 43 | if (info.isExtra) 44 | { 45 | DefaultGUI.Label(cellRect, info.bindObj as string, args.selected, args.focused); 46 | } 47 | break; 48 | } 49 | } 50 | 51 | protected override bool CanMultiSelect(TreeViewItem item) 52 | { 53 | return true; 54 | } 55 | 56 | protected override void ContextClickedItem(int id) 57 | { 58 | var item = FindItem(id, rootItem); 59 | var assetInfo = GetItemAssetInfo(item); 60 | if (item == null || assetInfo == null || assetInfo.deleted) 61 | { 62 | return; 63 | } 64 | 65 | GenericMenu menu = new GenericMenu(); 66 | if (!IsSelectionMulti()) 67 | { 68 | menu.AddItem(AssetDanshariStyle.Get().locationContext, false, OnContextSetActiveItem, id); 69 | menu.AddItem(AssetDanshariStyle.Get().explorerContext, false, OnContextExplorerActiveItem, item); 70 | } 71 | 72 | if (menu.GetItemCount() > 0) 73 | { 74 | menu.ShowAsContext(); 75 | } 76 | } 77 | } 78 | } -------------------------------------------------------------------------------- /Editor/ReferenceWindow/AssetReferenceTreeView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9ce8a590855d07478a358e33ca87f17 3 | timeCreated: 1536916120 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/ReferenceWindow/AssetReferenceWindow.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor.IMGUI.Controls; 2 | using UnityEngine; 3 | 4 | namespace AssetDanshari 5 | { 6 | public class AssetReferenceWindow : AssetBaseWindow 7 | { 8 | private void Awake() 9 | { 10 | titleContent = AssetDanshariStyle.Get().referenceTitle; 11 | minSize = new Vector2(727f, 331f); 12 | } 13 | 14 | protected override void InitTree(MultiColumnHeader multiColumnHeader) 15 | { 16 | m_AssetTreeModel = new AssetReferenceTreeModel(); 17 | m_AssetTreeView = new AssetReferenceTreeView(m_TreeViewState, multiColumnHeader, m_AssetTreeModel); 18 | } 19 | 20 | protected override void DrawGUI(GUIContent waiting, GUIContent nothing, bool expandCollapseComplex) 21 | { 22 | base.DrawGUI(AssetDanshariStyle.Get().referenceWaiting, AssetDanshariStyle.Get().referenceNothing, true); 23 | } 24 | 25 | protected override MultiColumnHeaderState CreateMultiColumnHeader() 26 | { 27 | var columns = new[] 28 | { 29 | new MultiColumnHeaderState.Column 30 | { 31 | headerContent = AssetDanshariStyle.Get().nameHeaderContent, 32 | headerTextAlignment = TextAlignment.Left, 33 | canSort = false, 34 | sortingArrowAlignment = TextAlignment.Right, 35 | width = 280, 36 | minWidth = 150, 37 | autoResize = false, 38 | allowToggleVisibility = false 39 | }, 40 | new MultiColumnHeaderState.Column 41 | { 42 | headerContent = AssetDanshariStyle.Get().referenceHeaderContent2, 43 | headerTextAlignment = TextAlignment.Left, 44 | canSort = false, 45 | width = 300, 46 | minWidth = 100, 47 | autoResize = false, 48 | allowToggleVisibility = true 49 | }, 50 | new MultiColumnHeaderState.Column 51 | { 52 | headerContent = AssetDanshariStyle.Get().referenceHeaderContent3, 53 | headerTextAlignment = TextAlignment.Left, 54 | canSort = false, 55 | width = 100, 56 | minWidth = 100, 57 | autoResize = false, 58 | allowToggleVisibility = true 59 | } 60 | }; 61 | 62 | return new MultiColumnHeaderState(columns); 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /Editor/ReferenceWindow/AssetReferenceWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1a2608a076921274b9fd84f5254b6caf 3 | timeCreated: 1536916095 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/TreeDataModel.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dcc5cd55116f18649ba44da33487dc35 3 | folderAsset: yes 4 | timeCreated: 1536135198 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetBaseWindow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEditor; 4 | using UnityEditor.IMGUI.Controls; 5 | 6 | namespace AssetDanshari 7 | { 8 | public class AssetBaseWindow : EditorWindow 9 | { 10 | public static void CheckPaths(string refPaths, string paths, string commonPaths, string grepPath) where T : AssetBaseWindow 11 | { 12 | var window = GetWindow(); 13 | window.Focus(); 14 | window.SetCheckPaths(refPaths, paths, commonPaths, grepPath); 15 | } 16 | 17 | private SearchField m_SearchField; 18 | protected AssetTreeModel m_AssetTreeModel; 19 | protected AssetTreeView m_AssetTreeView; 20 | 21 | [SerializeField] 22 | protected TreeViewState m_TreeViewState; 23 | [SerializeField] 24 | private MultiColumnHeaderState m_MultiColumnHeaderState; 25 | 26 | private void OnDisable() 27 | { 28 | DestroyTree(); 29 | } 30 | 31 | private void OnGUI() 32 | { 33 | Init(); 34 | DrawGUI(GUIContent.none, GUIContent.none, false); 35 | } 36 | 37 | private void Init() 38 | { 39 | if (m_SearchField != null) 40 | { 41 | return; 42 | } 43 | 44 | if (m_TreeViewState == null) 45 | { 46 | m_TreeViewState = new TreeViewState(); 47 | } 48 | 49 | bool firstInit = m_MultiColumnHeaderState == null; 50 | var headerState = CreateMultiColumnHeader(); 51 | if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState)) 52 | MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState); 53 | m_MultiColumnHeaderState = headerState; 54 | 55 | var multiColumnHeader = new MultiColumnHeader(headerState); 56 | if (firstInit) 57 | { 58 | multiColumnHeader.ResizeToFit(); 59 | } 60 | 61 | m_SearchField = new SearchField(); 62 | 63 | // 需要在 OnGUI 里面进行构造,否则treeview的GUIView会取到上一个窗口,导致焦点问题 64 | InitTree(multiColumnHeader); 65 | } 66 | 67 | protected virtual void InitTree(MultiColumnHeader multiColumnHeader) 68 | { 69 | m_AssetTreeModel = new AssetTreeModel(); 70 | m_AssetTreeView = new AssetTreeView(m_TreeViewState, multiColumnHeader, m_AssetTreeModel); 71 | } 72 | 73 | private void DestroyTree() 74 | { 75 | if (m_AssetTreeView != null) 76 | { 77 | m_AssetTreeView.Destroy(); 78 | } 79 | } 80 | 81 | protected virtual void DrawGUI(GUIContent waiting, GUIContent nothing, bool expandCollapseComplex) 82 | { 83 | var style = AssetDanshariStyle.Get(); 84 | style.InitGUI(); 85 | 86 | if (m_AssetTreeModel.assetPaths != null) 87 | { 88 | if (!m_AssetTreeModel.HasData()) 89 | { 90 | ShowNotification(nothing); 91 | GUILayout.FlexibleSpace(); 92 | } 93 | else 94 | { 95 | EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); 96 | if (expandCollapseComplex) 97 | { 98 | DrawToolbarExpandCollapse2(); 99 | } 100 | else 101 | { 102 | DrawToolbarExpandCollapse(); 103 | } 104 | EditorGUI.BeginChangeCheck(); 105 | m_AssetTreeView.searchString = m_SearchField.OnToolbarGUI(m_AssetTreeView.searchString); 106 | if (EditorGUI.EndChangeCheck() && GUIUtility.keyboardControl == 0) 107 | { 108 | m_AssetTreeView.SetFocusAndEnsureSelectedItem(); 109 | } 110 | DrawToolbarMore(); 111 | if (GUILayout.Button(style.exportCsv, EditorStyles.toolbarButton, GUILayout.Width(70f))) 112 | { 113 | m_AssetTreeModel.ExportCsv(); 114 | } 115 | EditorGUILayout.EndHorizontal(); 116 | m_AssetTreeView.OnGUI(GUILayoutUtility.GetRect(0, 100000, 0, 100000)); 117 | } 118 | EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); 119 | GUILayout.FlexibleSpace(); 120 | GUILayout.Label(m_AssetTreeModel.assetPaths, style.labelStyle); 121 | EditorGUILayout.EndHorizontal(); 122 | } 123 | else 124 | { 125 | ShowNotification(waiting); 126 | } 127 | } 128 | 129 | protected virtual MultiColumnHeaderState CreateMultiColumnHeader() 130 | { 131 | return null; 132 | } 133 | 134 | protected virtual void DrawToolbarMore() 135 | { 136 | } 137 | 138 | protected void DrawToolbarExpandCollapse() 139 | { 140 | if (GUILayout.Button(AssetDanshariStyle.Get().expandAll, EditorStyles.toolbarButton, GUILayout.Width(50f))) 141 | { 142 | m_AssetTreeView.ExpandAll(); 143 | } 144 | if (GUILayout.Button(AssetDanshariStyle.Get().collapseAll, EditorStyles.toolbarButton, GUILayout.Width(50f))) 145 | { 146 | m_AssetTreeView.CollapseAll(); 147 | } 148 | } 149 | 150 | protected void DrawToolbarExpandCollapse2() 151 | { 152 | var style = AssetDanshariStyle.Get(); 153 | Rect toolBtnRect = GUILayoutUtility.GetRect(style.expandAll, EditorStyles.toolbarDropDown, GUILayout.Width(50f)); 154 | if (GUI.Button(toolBtnRect, style.expandAll, EditorStyles.toolbarDropDown)) 155 | { 156 | GenericMenu menu = new GenericMenu(); 157 | menu.AddItem(style.expandAll2, false, m_AssetTreeView.ExpandAll); 158 | menu.AddItem(style.expandAll3, false, m_AssetTreeView.ExpandAllExceptLast); 159 | menu.DropDown(toolBtnRect); 160 | } 161 | toolBtnRect = GUILayoutUtility.GetRect(style.collapseAll, EditorStyles.toolbarDropDown, GUILayout.Width(50f)); 162 | if (GUI.Button(toolBtnRect, style.collapseAll, EditorStyles.toolbarDropDown)) 163 | { 164 | GenericMenu menu = new GenericMenu(); 165 | menu.AddItem(style.collapseAll2, false, m_AssetTreeView.CollapseAll); 166 | menu.AddItem(style.collapseAll3, false, m_AssetTreeView.CollapseOnlyLast); 167 | menu.DropDown(toolBtnRect); 168 | } 169 | } 170 | 171 | private void SetCheckPaths(string refPaths, string paths, string commonPaths, string grepPath) 172 | { 173 | EditorApplication.delayCall += () => 174 | { 175 | RemoveNotification(); 176 | m_AssetTreeModel.SetDataPaths(refPaths, paths, commonPaths, grepPath); 177 | if (m_AssetTreeModel.HasData()) 178 | { 179 | m_AssetTreeView.Reload(); 180 | m_AssetTreeView.ExpandAllSmartLast(); 181 | } 182 | Repaint(); 183 | }; 184 | } 185 | } 186 | } 187 | -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetBaseWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88123c57a3a34c4f968d4544889e188b 3 | timeCreated: 1536655608 -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetMultiColumnHeader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEditor.IMGUI.Controls; 4 | using UnityEngine; 5 | 6 | namespace AssetDanshari 7 | { 8 | public class AssetMultiColumnHeader : MultiColumnHeader 9 | { 10 | public AssetMultiColumnHeader(MultiColumnHeaderState state) : base(state) 11 | { 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetMultiColumnHeader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3984bf670412a747bb66f746819fb13 3 | timeCreated: 1536137473 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetTreeModel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e1827df064a45c395cd51806bbeda85 3 | timeCreated: 1536655374 -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetTreeView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9d5957bf39ef4bb7b738d6b00ae43245 3 | timeCreated: 1536655229 -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetTreeViewItem.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor.IMGUI.Controls; 2 | 3 | namespace AssetDanshari 4 | { 5 | public class AssetTreeViewItem : TreeViewItem 6 | { 7 | public T data { get; private set; } 8 | 9 | public AssetTreeViewItem(int id, int depth, string displayName, T data) : base(id, depth, displayName) 10 | { 11 | this.data = data; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Editor/TreeDataModel/AssetTreeViewItem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ff5be57a4fa64a40b1612d576bf3f43 3 | timeCreated: 1536289984 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Editor/WuHuan.AssetDanshari.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WuHuan.AssetDanshari.Editor", 3 | "references": [], 4 | "optionalUnityReferences": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [] 9 | } -------------------------------------------------------------------------------- /Editor/WuHuan.AssetDanshari.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d73ad8be1aba6b14c88097c7bab67ae8 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 WuHuan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1418d504953ffef4091186832512342c 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity Asset Danshari 资源断舍离 2 | 3 | UnityAssetDanshari 是一个 Unity 资源清理重复以及引用被引用查找工具。内核使用 ripgrep 文本搜索工具,使得资源查找速度飞快。 4 | UnityAssetDanshari is a Unity merge duplicated assets and find reference tool. 5 | 6 | ## 背景 7 | 在游戏制作过程,随着资源越来越多,可能存在重复的资源,也需要删除不被使用的资源,但是如果使用 Unity 的 API 去查找引用关系将会很耗时间,另外,资源都是对应使用的,比如 UI 图片只在 UI 界面上进行引用,所以不需要去查找其他地方是否引用到。 8 | 9 | ## 安装 10 | 11 | - 通过【Package Manager】包管理器,添加git URL地址:https://github.com/akof1314/UnityAssetDanshari.git 12 | 13 | ## 首次使用 14 | 15 | 提前准备 ripgrep 的二进制文件[https://github.com/BurntSushi/ripgrep/releases](https://github.com/BurntSushi/ripgrep/releases), 也可以直接使用示例工程自带的 Windows 版二进制文件。 16 | 17 | ![](./Documentation~/Images/MainWindows.png) 18 | 19 | 工具入口为菜单栏【美术工具/资源断舍离】,如果导入了示例工程,则打开会包含默认的配置项。点击右上角的`ripgrep`按钮,可以进行配置`ripgrep路径`。如果没有配置`ripgrep路径`则会使用默认的普通文件搜索方式,速度相当慢。 20 | 21 | ## 默认配置项 22 | 23 | 工具配置文件保存在`"UserSettings/AssetDanshariSetting.asset"`,为了能够团队默认能够有一样的配置内容,可以绑定创建配置事件。 24 | 25 | ```csharp 26 | [InitializeOnLoadMethod] 27 | private static void InitOnLoad() 28 | { 29 | AssetDanshariHandler.onCreateSetting += OnCreateSetting; 30 | AssetDanshariHandler.onDependenciesLoadDataMore += OnDependenciesLoadDataMore; 31 | AssetDanshariHandler.onDependenciesContextDraw += OnDependenciesContextDraw; 32 | } 33 | ``` 34 | 35 | 用户自定义配置事件,可以指定rg到工程的统一外部工具路径。 36 | 37 | ```csharp 38 | private static AssetDanshariSetting OnCreateSetting() 39 | { 40 | var setting = ScriptableObject.CreateInstance(); 41 | setting.ripgrepPath = "Assets/Samples/Asset Danshari/1.0.0/Simple Demo/rg/rg.exe"; 42 | setting.assetReferenceInfos.Add(new AssetDanshariSetting.AssetReferenceInfo() 43 | { 44 | referenceFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Prefab\" || \"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Samples\"", 45 | assetFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/PNG\"", 46 | assetCommonFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/PNG/Common\"" 47 | }); 48 | return setting; 49 | } 50 | ``` 51 | 52 | ## 检查列表 53 | 54 | 列表按资源的使用环境进行分组。 55 | - 将`Project`窗口里的文件或文件夹路径拖到目录框 56 | - 多路径方式可以多选后再拖入,也可以按住`Ctrl`进行添加 57 | - 【公共资源目录】是用来放公共资源的路径,比如 UI 图片资源存在被多个界面引用的时候,可以快捷操作移动资源到公共目录 58 | 59 | ## 引用查找 60 | 61 | 对【引用目录】下的每个资源进行检查是否引用到了【资源目录】下的资源,比如 UI 界面预制引用 UI 图片。 62 | 63 | ![](https://img-blog.csdnimg.cn/20181110160138165.png) 64 | 65 | 双击项,可以自动在【Project】窗口定位到资源。 66 | 67 | ## 被引用查找 68 | 69 | 对【资源目录】下的每个资源进行分析,看是否被【引用目录】下的资源进行引用,比如 UI 图片被哪些 UI 界面进行引用。 70 | 71 | ![](https://img-blog.csdnimg.cn/20181110160334244.png) 72 | 73 | 【删除选中资源】菜单项功能,是直接对资源进行删除,当发现没有被使用到时,可以这样快捷删除资源。 74 | 75 | 右上角【过滤为空】按钮,可以过滤显示没有被使用的资源,方便快速查看。 76 | 77 | ## 检查重复 78 | 79 | 对资源文件进行逐块 Hash128 检查重复,再对重复的资源进行操作。 80 | 81 | ![](https://img-blog.csdnimg.cn/20181110160230435.png) 82 | 83 | 84 | 【资源被引用查找】菜单项功能,是在【被引用查找】窗口里定位到此资源的使用情况,方便进行决定保留还是删除,注意,需要先打开了【被引用查找】窗口才可以定位到。 85 | 86 | 【仅使用此资源,其余删除】菜单项功能,将会删除其余重复的资源,并且将所有引用到这些删除资源的地方都改成引用保留的那一个。 87 | 88 | 当美术对同一资源进行切图两次,会导致文件 Hash128 值不一样,就无法被工具所检测到。出现这种情况的时候,肉眼发现到两个资源其实是一样的,可以在这个窗口右上角点击【手动添加】按钮。 89 | 90 | ![](https://img-blog.csdnimg.cn/20181110160308811.png) 91 | 92 | 手动进行添加资源路径,将资源文件拖动到文本框,再点击【确定】。就会自动定位到新增的数据,接着就可以按处理重复资源一样进行操作。 93 | 94 | ## 扩展被引用来源 95 | 96 | ![](./Documentation~/Images/CustomDependSource.png) 97 | 98 | 资源不止被另外的资源直接引用,还可能配置在表里、代码里进行动态使用,在这种情况下,可以绑定`onDependenciesLoadDataMore`事件,对传入的资源路径进行判别处理,参照示例工程代码。 99 | 100 | ## API 调用 101 | 102 | 每次需要拖曳文件/目录到窗口可能会觉得不方便,或者想要集成到自己的工具里,可以使用公开的 API,调用三个不同的窗口。 103 | 104 | ```csharp 105 | /// 106 | /// 显示引用查找窗口 107 | /// 108 | /// 引用的文件、目录集合 109 | /// 资源的文件、目录集合 110 | /// 公共资源目录集合 111 | public static void DisplayReferenceWindow(string refPaths, string resPaths, string commonPaths = "") 112 | 113 | /// 114 | /// 显示被引用查找窗口 115 | /// 116 | public static void DisplayDependenciesWindow(string refPaths, string resPaths, string commonPaths = "") 117 | 118 | /// 119 | /// 显示重复资源检查窗口 120 | /// 121 | public static void DisplayDuplicateWindow(string refPaths, string resPaths, string commonPaths = "") 122 | ``` 123 | 124 | ![](./Documentation~/Images/ApiDemo.gif) 125 | 126 | 示例工程举例实现右键资源文件来查看被引用情况。 127 | 128 | ```csharp 129 | [MenuItem("Assets/查找该资源的被引用")] 130 | private static void FindReferenceAll() 131 | { 132 | string[] paths = new string[Selection.objects.Length]; 133 | for (var i = 0; i < Selection.objects.Length; i++) 134 | { 135 | var o = Selection.objects[i]; 136 | paths[i] = AssetDatabase.GetAssetPath(o); 137 | } 138 | 139 | AssetDanshariWindow.DisplayDependenciesWindow( 140 | AssetDanshariUtility.PathArrayToStr(new []{"Assets"}), 141 | AssetDanshariUtility.PathArrayToStr(paths)); 142 | } 143 | ``` 144 | 145 | ## 当前限制 146 | 147 | 二进制配置文件,如:Lighting data, Terrain data 之类,无法查找其引用资源关系。 -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 877731ff60da47140933cc3bdb17e34b 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/Csv.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4af0499795c1c1e4ea8a0035be51e14d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Csv/image_config.csv: -------------------------------------------------------------------------------- 1 | ,id,type,image_path, 2 | 备注,流水id,类型,图片路径, 3 | ,1,1,PNG/AA/UI_Fill_Orange, -------------------------------------------------------------------------------- /Samples~/Csv/image_config.csv.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d6f713eed2b562e42b79cd982ab15938 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e0fee68ac6e34f3792998dd81384a66 3 | folderAsset: yes 4 | timeCreated: 1536131007 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/Fonts/FredokaOne-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Fonts/FredokaOne-Regular.ttf -------------------------------------------------------------------------------- /Samples~/Fonts/FredokaOne-Regular.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4506bf6ca285b494ab0993e12703d5e6 3 | timeCreated: 1506421581 4 | licenseType: Store 5 | TrueTypeFontImporter: 6 | serializedVersion: 4 7 | fontSize: 16 8 | forceTextureCase: -2 9 | characterSpacing: 0 10 | characterPadding: 1 11 | includeFontData: 1 12 | fontName: Fredoka One 13 | fontNames: 14 | - Fredoka One 15 | fallbackFontReferences: [] 16 | customCharacters: 17 | fontRenderingMode: 0 18 | ascentCalculationMode: 1 19 | userData: 20 | assetBundleName: 21 | assetBundleVariant: 22 | -------------------------------------------------------------------------------- /Samples~/PNG.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90c6f6fdcd859445584a923494a49098 3 | folderAsset: yes 4 | timeCreated: 1509991824 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/PNG/AA.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94ca30021a1bd874fb2cabd383ad64bd 3 | folderAsset: yes 4 | timeCreated: 1536308193 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Button_Standard_Green.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Green.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17ef8c2e6bda845ca82eb3e56635a961 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 16, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 6d0083989339b8c4fb2d167e8909f009 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Button_Standard_Orange.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Orange.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: edf711441da8c428bae528686532e5e4 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 16, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: b2024675c1a6fe749865147055e80052 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Button_Standard_Red.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Red.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01e584fc9ff6d4a969400e68b97befc4 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 16, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: b3f3a3ea44f194642b853736b64d8978 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Button_Standard_Sky.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Button_Standard_Sky.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4f28b6fb67fb4658addf98ee532a7ac 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 16, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: c96e8a1a03373c64396c0f5361a4551a 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Fill_Green.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Green.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52a0b86a66ab743af98c4135d7f3e480 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 499c90a3f8bc6f2419f505b8d6f1ce5f 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Fill_Orange.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Orange.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d07b2098820749219726c7524130fdf 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 4a067e0e99b64784bbfed61bd59870cc 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Fill_Red.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Red.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18e2ff1d451834543904126f62d5eb65 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 2fe3f80c0e456b34494a0e245654456f 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Fill_Sky.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Fill_Sky.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 936056ec3ddb143549903ecd2f90bdc8 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: fcce59d313b4a0747837240a83e31b81 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Frame_Dark_Transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Frame_Dark_Transparent.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Frame_Dark_Transparent.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 11d75de4e00bf4ca096aa248388d6a76 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 8, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 7f20c4f2fd1cf9142881c7e11c00ccbf 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Frame_Dark_White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Frame_Dark_White.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Frame_Dark_White.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f8f919528929444d38fb2c14ee234bb1 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 8, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: c06c82f8d3b450943be985fe7a610453 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Frame_Transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Frame_Transparent.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Frame_Transparent.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 66982843b793e4fca92ac00569f2a7ad 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 8, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 6b694567cb7cba54898ca64722ca1a66 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Tab_Active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Tab_Active.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Tab_Active.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c6e1c1cabbcb24e8fa0372a11a27535e 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 24, y: 0, z: 24, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: a9907cf6600e61e46bc5487e4fcde614 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Tab_Inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/AA/UI_Tab_Inactive.png -------------------------------------------------------------------------------- /Samples~/PNG/AA/UI_Tab_Inactive.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4858e152cf1864da293ed77efa6f4e31 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 24, y: 0, z: 24, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: de857beaa8e01d546865f6af49530343 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/BB.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d06a1dcbbbc36344919b68600b87d63 3 | folderAsset: yes 4 | timeCreated: 1536308198 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Fill_Green 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/BB/UI_Fill_Green 1.png -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Fill_Green 1.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e097c74bebcfd4447815e452cf8458fa 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: bd1cf062e3d7c6848816c90dc0d89697 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: BB 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Frame_White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/BB/UI_Frame_White.png -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Frame_White.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 159709bc538104a329b60b7b07386209 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 8, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 7a03e916d2d125b41a8102ec66d526a1 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: BB 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Panel_Content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/BB/UI_Panel_Content.png -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Panel_Content.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0c4441e403ea437ca79f6f9b5b15da8 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 8, y: 8, z: 8, w: 8} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 0f236eb53d944554381f3f1a3fda3509 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: BB 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Panel_Window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/BB/UI_Panel_Window.png -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Panel_Window.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8bba60bd272ff4978982a12a88f56b11 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 16, y: 20, z: 16, w: 16} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 3b48f1aa4b6b1ae4c9d5a7225cc9a21b 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: BB 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Tab_Inactive 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/PNG/BB/UI_Tab_Inactive 1.png -------------------------------------------------------------------------------- /Samples~/PNG/BB/UI_Tab_Inactive 1.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 648d9db656d6ce146afce3c62fcb1ae3 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 24, y: 0, z: 24, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 5d3f6a54ac587164ca6404ef788c735a 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: BB 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/PNG/Common.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c9bd33658670ce4387e1993963d39db 3 | folderAsset: yes 4 | timeCreated: 1536308224 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/PNG/Common/CC.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa739d74a7c6d184296f5373249fbfd4 3 | folderAsset: yes 4 | timeCreated: 1536315912 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/Prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10477858997ef744f9a8982b5c927ee1 3 | folderAsset: yes 4 | timeCreated: 1538987940 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/Prefab/sky_prefab.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1914139268071122} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1914139268071122 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224576713042532188} 22 | - component: {fileID: 222123926995041254} 23 | - component: {fileID: 114922623540109228} 24 | m_Layer: 5 25 | m_Name: sky_prefab 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!114 &114922623540109228 32 | MonoBehaviour: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | m_GameObject: {fileID: 1914139268071122} 37 | m_Enabled: 1 38 | m_EditorHideFlags: 0 39 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 40 | m_Name: 41 | m_EditorClassIdentifier: 42 | m_Material: {fileID: 0} 43 | m_Color: {r: 1, g: 1, b: 1, a: 1} 44 | m_RaycastTarget: 1 45 | m_OnCullStateChanged: 46 | m_PersistentCalls: 47 | m_Calls: [] 48 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 49 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 50 | m_Sprite: {fileID: 21300000, guid: 936056ec3ddb143549903ecd2f90bdc8, type: 3} 51 | m_Type: 0 52 | m_PreserveAspect: 0 53 | m_FillCenter: 1 54 | m_FillMethod: 4 55 | m_FillAmount: 1 56 | m_FillClockwise: 1 57 | m_FillOrigin: 0 58 | --- !u!222 &222123926995041254 59 | CanvasRenderer: 60 | m_ObjectHideFlags: 1 61 | m_PrefabParentObject: {fileID: 0} 62 | m_PrefabInternal: {fileID: 100100000} 63 | m_GameObject: {fileID: 1914139268071122} 64 | --- !u!224 &224576713042532188 65 | RectTransform: 66 | m_ObjectHideFlags: 1 67 | m_PrefabParentObject: {fileID: 0} 68 | m_PrefabInternal: {fileID: 100100000} 69 | m_GameObject: {fileID: 1914139268071122} 70 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 71 | m_LocalPosition: {x: 0, y: 0, z: 0} 72 | m_LocalScale: {x: 1, y: 1, z: 1} 73 | m_Children: [] 74 | m_Father: {fileID: 0} 75 | m_RootOrder: 0 76 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 77 | m_AnchorMin: {x: 0.5, y: 0.5} 78 | m_AnchorMax: {x: 0.5, y: 0.5} 79 | m_AnchoredPosition: {x: 0, y: 0} 80 | m_SizeDelta: {x: 100, y: 100} 81 | m_Pivot: {x: 0.5, y: 0.5} 82 | -------------------------------------------------------------------------------- /Samples~/Prefab/sky_prefab.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e01e26092e4d5e545ba8629b0071a652 3 | timeCreated: 1538987979 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 100100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/Resource Icons.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 309d811e7a17a4e09aa7c15cb66febfc 3 | folderAsset: yes 4 | timeCreated: 1507201484 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Coins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Resource Icons/UI_Graphic_Resource_Coins.png -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Coins.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aebcbaf5d1d2146bf9ff69b1b95334d6 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: da1d92d11bc903141925282cee909a8a 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Food.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Resource Icons/UI_Graphic_Resource_Food.png -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Food.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25b6b275757df4f589d23b542f236cb0 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: ba633574dbb55f74fb7f593d427b2f56 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Gems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Resource Icons/UI_Graphic_Resource_Gems.png -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Gems.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51cbf6e0aefa3464ba1c716d3be413aa 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: c0719f8fdf2f22a449ce8dc27379ef8a 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Iron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Resource Icons/UI_Graphic_Resource_Iron.png -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Iron.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46c993598ebc54c0c9ebd8a0050516fb 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: a453304ac32d2e74b90574d7efa3986e 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Resource Icons/UI_Graphic_Resource_Tools.png -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Tools.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b6adf1cf14f6d464194562461987edf1 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 26c152062c07db5439a12b6d1c5f1c0f 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Resource Icons/UI_Graphic_Resource_Wood.png -------------------------------------------------------------------------------- /Samples~/Resource Icons/UI_Graphic_Resource_Wood.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 350f2e489c1d0458db18e969f67cb28a 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: e6459c056292cab4497ca7702d8b0619 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/Samples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 545a81edb125e445dbd07981789defce 3 | folderAsset: yes 4 | timeCreated: 1509618680 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples~/Samples/Achievements.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25868143033004857a50688c5c8f49fb 3 | timeCreated: 1509985659 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Samples/Background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/Samples/Background.png -------------------------------------------------------------------------------- /Samples~/Samples/Background.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 744b884f5ab1b4aefb7838eeec4d046a 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | - serializedVersion: 2 106 | buildTarget: WebGL 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 28aef6ae78429dd4aa6ac011c5b0b739 123 | vertices: [] 124 | indices: 125 | edges: [] 126 | weights: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Samples~/Samples/HomeScreen.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9cb75ac55965245e39bc582c3185da8c 3 | timeCreated: 1509984840 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Samples/LogIn.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d1a5d79017a2402da025eb2ec713e4e 3 | timeCreated: 1509985370 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Samples/PopUp.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c8a8158d4ee6b40a6aea1a14cb703e75 3 | timeCreated: 1509986798 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Samples/Resource Icons.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5cc51e3b7dd544b21ac20ada3d3aba7e 3 | timeCreated: 1508064105 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Samples/SettingsWindow.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0533d1bdf62f84bb5b4036aaf7550fe6 3 | timeCreated: 1509984572 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Samples/Shop.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c3172757e1ee47b996adc7736c63853 3 | timeCreated: 1509984863 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Samples/Simple Vector Icons.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ff1e55cc17b347e6b324f73960203d6 3 | timeCreated: 1508064105 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00ccbc13c9a8cad4a8244ba2810d49b5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b5252f299fcdaad4a9f274ef59a4a025 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Scripts/Editor/AssetDanshariHandlerDemo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace AssetDanshari 9 | { 10 | public static class AssetDanshariHandlerDemo 11 | { 12 | [InitializeOnLoadMethod] 13 | private static void InitOnLoad() 14 | { 15 | AssetDanshariHandler.onCreateSetting += OnCreateSetting; 16 | AssetDanshariHandler.onDependenciesLoadDataMore += OnDependenciesLoadDataMore; 17 | AssetDanshariHandler.onDependenciesContextDraw += OnDependenciesContextDraw; 18 | } 19 | 20 | private static AssetDanshariSetting OnCreateSetting() 21 | { 22 | var setting = ScriptableObject.CreateInstance(); 23 | setting.ripgrepPath = "Assets/Samples/Asset Danshari/1.0.0/Simple Demo/rg/rg.exe"; 24 | setting.assetReferenceInfos.Add(new AssetDanshariSetting.AssetReferenceInfo() 25 | { 26 | referenceFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Prefab\" || \"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Samples\"", 27 | assetFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/PNG\"", 28 | assetCommonFolder = "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/PNG/Common\"" 29 | }); 30 | return setting; 31 | } 32 | 33 | private static void OnDependenciesLoadDataMore(string resPath, List resInfos, AssetTreeModel treeModel) 34 | { 35 | // 去代码定义文件去查找 36 | if (resPath != "\"Assets/Samples/Asset Danshari/1.0.0/Simple Demo/PNG\"") 37 | { 38 | return; 39 | } 40 | 41 | int preLen = resPath.Length - "PNG".Length - 2; 42 | string codePath = "Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Scripts/Editor/UISpriteDefine.cs"; 43 | try 44 | { 45 | string text = File.ReadAllText(codePath); 46 | 47 | foreach (var assetInfo in resInfos) 48 | { 49 | string searchText = assetInfo.fileRelativePath.Substring(preLen); 50 | searchText = searchText.Remove(searchText.Length - 4); 51 | 52 | if (text.Contains(searchText)) 53 | { 54 | AssetTreeModel.AssetInfo info = treeModel.GenAssetInfo(codePath); 55 | info.isExtra = true; 56 | assetInfo.AddChild(info); 57 | } 58 | } 59 | } 60 | catch (Exception ex) 61 | { 62 | Debug.LogError(ex.Message); 63 | } 64 | 65 | string csvPath = "Assets/Samples/Asset Danshari/1.0.0/Simple Demo/Csv/image_config.csv"; 66 | try 67 | { 68 | string text = File.ReadAllText(csvPath); 69 | 70 | foreach (var assetInfo in resInfos) 71 | { 72 | string searchText = assetInfo.fileRelativePath.Substring(preLen); 73 | searchText = searchText.Remove(searchText.Length - 4); 74 | 75 | if (text.Contains(searchText)) 76 | { 77 | AssetTreeModel.AssetInfo info = treeModel.GenAssetInfo(csvPath); 78 | info.isExtra = true; 79 | assetInfo.AddChild(info); 80 | } 81 | } 82 | } 83 | catch (Exception ex) 84 | { 85 | Debug.LogError(ex.Message); 86 | } 87 | } 88 | 89 | private static void OnDependenciesContextDraw(GenericMenu menu) 90 | { 91 | menu.AddSeparator(String.Empty); 92 | menu.AddItem(new GUIContent("生成代码定义/C# 定义"), false, OnDependenciesContextGenCodeCSharp); 93 | menu.AddItem(new GUIContent("生成代码定义/Lua 定义"), false, OnDependenciesContextGenCodeLua); 94 | } 95 | 96 | private static void OnDependenciesContextGenCodeCSharp() 97 | { 98 | 99 | } 100 | 101 | private static void OnDependenciesContextGenCodeLua() 102 | { 103 | 104 | } 105 | } 106 | } -------------------------------------------------------------------------------- /Samples~/Scripts/Editor/AssetDanshariHandlerDemo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 662ab9e1166198647bed6d6370b59302 3 | timeCreated: 1537319574 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Samples~/Scripts/Editor/UISpriteDefine.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class UISpriteDefine : MonoBehaviour 4 | { 5 | public static class Simple 6 | { 7 | public static string UI_Fill_Orange = "PNG/AA/UI_Fill_Orange"; 8 | public static string UI_Frame_Transparent = "PNG/AA/UI_Frame_Transparent"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Samples~/Scripts/Editor/UISpriteDefine.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e76043e044e357b4aa22247217276873 3 | timeCreated: 1537321334 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Samples~/Scripts/Editor/WuHuan.AssetDanshari.Sample.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WuHuan.AssetDanshari.Sample.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:d73ad8be1aba6b14c88097c7bab67ae8" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /Samples~/Scripts/Editor/WuHuan.AssetDanshari.Sample.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 98a20b19e66ac5349ad5afe28a0f6dbe 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/rg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 573179625a652ab4991378bba0903e56 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/rg/rg.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akof1314/UnityAssetDanshari/b5c1db6159d5e0e41229b4f87b04afef5df1e912/Samples~/rg/rg.exe -------------------------------------------------------------------------------- /Samples~/rg/rg.exe.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ffedaceb99176344aee1571450f1d3b 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wuhuan.assetdanshari", 3 | "displayName": "Asset Danshari", 4 | "version": "1.0.0", 5 | "documentationUrl": "https://github.com/akof1314/UnityAssetDanshari", 6 | "description": "Asset Danshar, a Unity merge duplicated assets and find reference tool.\n资源断舍离,资源清理重复以及引用被引用查找。", 7 | "category": "Editor", 8 | "author": { 9 | "name": "Wuhuan", 10 | "url": "https://github.com/akof1314" 11 | }, 12 | "samples": [ 13 | { 14 | "displayName": "Simple Demo", 15 | "description": "一个简单的示例。", 16 | "path": "Samples~" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b856a8e5c17f8d4e935fe4d434080da 3 | PackageManifestImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------