├── .gitignore ├── Documentation~ └── image │ ├── ReporterAb.png │ ├── ResourcesReporter.png │ ├── SceneReporter.png │ ├── audioReporter.png │ ├── ja │ ├── ReporterAb.png │ ├── ResourcesReporter.png │ ├── audioReporter.png │ ├── modelReporter.png │ ├── reporterWindow.png │ ├── sceneReporter.png │ └── textureReporter.png │ ├── menu.png │ ├── modelReporter.png │ ├── reporterWindow.png │ └── textureReporter.png ├── Editor.meta ├── Editor ├── AssetsReporter.Editor.asmdef ├── AssetsReporter.Editor.asmdef.meta ├── GUI.meta ├── GUI │ ├── AssetsReporterWindow.cs │ └── AssetsReporterWindow.cs.meta ├── Inner.meta └── Inner │ ├── AssetBundleReporter.cs │ ├── AssetBundleReporter.cs.meta │ ├── AssetsReporterLanguageData.cs │ ├── AssetsReporterLanguageData.cs.meta │ ├── AssetsReporterUtils.cs │ ├── AssetsReporterUtils.cs.meta │ ├── AudioReporter.cs │ ├── AudioReporter.cs.meta │ ├── ModelReporter.cs │ ├── ModelReporter.cs.meta │ ├── ResourcesReporter.cs │ ├── ResourcesReporter.cs.meta │ ├── SceneReporter.cs │ ├── SceneReporter.cs.meta │ ├── TextureReporter.cs │ └── TextureReporter.cs.meta ├── LICENSE ├── LICENSE.meta ├── README.ja.md ├── README.ja.md.meta ├── README.md ├── README.md.meta ├── ReporterResource.meta ├── ReporterResource ├── css.meta ├── css │ ├── report.css │ └── report.css.meta ├── excludeList.txt ├── excludeList.txt.meta ├── index.html ├── index.html.meta ├── js.meta ├── js │ ├── reporter.js │ ├── reporter.js.meta │ ├── warning_audio.js │ ├── warning_audio.js.meta │ ├── warning_model.js │ ├── warning_model.js.meta │ ├── warning_texture.js │ └── warning_texture.js.meta ├── report_ab.html ├── report_ab.html.meta ├── report_audio.html ├── report_audio.html.meta ├── report_duplicate_ab.html ├── report_duplicate_ab.html.meta ├── report_model.html ├── report_model.html.meta ├── report_resources.html ├── report_resources.html.meta ├── report_scene.html ├── report_scene.html.meta ├── report_texture.html ├── report_texture.html.meta ├── result.meta ├── result │ ├── result_data_is_here.txt │ └── result_data_is_here.txt.meta ├── template.meta ├── template │ ├── en.meta │ ├── en │ │ ├── template_ab.js │ │ ├── template_ab.js.meta │ │ ├── template_audio.js │ │ ├── template_audio.js.meta │ │ ├── template_index.js │ │ ├── template_index.js.meta │ │ ├── template_model.js │ │ ├── template_model.js.1~ │ │ ├── template_model.js.meta │ │ ├── template_resources.js │ │ ├── template_resources.js.meta │ │ ├── template_scene.js │ │ ├── template_scene.js.meta │ │ ├── template_texture.js │ │ ├── template_texture.js.meta │ │ ├── template_tips.js │ │ └── template_tips.js.meta │ ├── jp.meta │ └── jp │ │ ├── template_ab.js │ │ ├── template_ab.js.meta │ │ ├── template_audio.js │ │ ├── template_audio.js.meta │ │ ├── template_index.js │ │ ├── template_index.js.meta │ │ ├── template_model.js │ │ ├── template_model.js.1~ │ │ ├── template_model.js.meta │ │ ├── template_resources.js │ │ ├── template_resources.js.meta │ │ ├── template_scene.js │ │ ├── template_scene.js.meta │ │ ├── template_texture.js │ │ ├── template_texture.js.meta │ │ ├── template_tips.js │ │ └── template_tips.js.meta ├── third_party.meta ├── third_party │ ├── License_jquery.txt │ ├── License_jquery.txt.meta │ ├── jquery-2.2.3.min.js │ └── jquery-2.2.3.min.js.meta ├── tips.html └── tips.html.meta ├── package.json └── package.json.meta /.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /[Bb]uilds/ 6 | /Assets/AssetStoreTools* 7 | /AssetsReporter/AssetsReporter/result/*.js 8 | /AssetsReporter/AssetsReporter/result/preview/ 9 | 10 | # Autogenerated VS/MD solution and project files 11 | ExportedObj/ 12 | *.csproj 13 | *.unityproj 14 | *.sln 15 | *.suo 16 | *.tmp 17 | *.user 18 | *.userprefs 19 | *.pidb 20 | *.booproj 21 | *.svd 22 | 23 | 24 | # Unity3D generated meta files 25 | *.pidb.meta 26 | 27 | # Unity3D Generated File On Crash Reports 28 | sysinfo.txt 29 | -------------------------------------------------------------------------------- /Documentation~/image/ReporterAb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ReporterAb.png -------------------------------------------------------------------------------- /Documentation~/image/ResourcesReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ResourcesReporter.png -------------------------------------------------------------------------------- /Documentation~/image/SceneReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/SceneReporter.png -------------------------------------------------------------------------------- /Documentation~/image/audioReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/audioReporter.png -------------------------------------------------------------------------------- /Documentation~/image/ja/ReporterAb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ja/ReporterAb.png -------------------------------------------------------------------------------- /Documentation~/image/ja/ResourcesReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ja/ResourcesReporter.png -------------------------------------------------------------------------------- /Documentation~/image/ja/audioReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ja/audioReporter.png -------------------------------------------------------------------------------- /Documentation~/image/ja/modelReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ja/modelReporter.png -------------------------------------------------------------------------------- /Documentation~/image/ja/reporterWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ja/reporterWindow.png -------------------------------------------------------------------------------- /Documentation~/image/ja/sceneReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ja/sceneReporter.png -------------------------------------------------------------------------------- /Documentation~/image/ja/textureReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/ja/textureReporter.png -------------------------------------------------------------------------------- /Documentation~/image/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/menu.png -------------------------------------------------------------------------------- /Documentation~/image/modelReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/modelReporter.png -------------------------------------------------------------------------------- /Documentation~/image/reporterWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/reporterWindow.png -------------------------------------------------------------------------------- /Documentation~/image/textureReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/Documentation~/image/textureReporter.png -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4909c736a3c046245995107c1fbfffb7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/AssetsReporter.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AssetsReporter.Editor", 3 | "references": [], 4 | "optionalUnityReferences": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [] 14 | } -------------------------------------------------------------------------------- /Editor/AssetsReporter.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55269ae81641776479ba2e49eb34e1ce 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/GUI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8faa98d55ca710d4b808d3e04a3a4973 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/GUI/AssetsReporterWindow.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System; 4 | using System.Text; 5 | using System.Collections; 6 | using System.IO; 7 | using System.Collections.Generic; 8 | 9 | namespace UTJ.AssetsReporter 10 | { 11 | 12 | public class AssetsReporterWindow : EditorWindow 13 | { 14 | 15 | public class LanguageSetting 16 | { 17 | public string languageCode; 18 | public string languageOutput; 19 | public string appLanguage; 20 | 21 | public LanguageSetting(string code, string output, string language) 22 | { 23 | this.languageCode = code; 24 | this.languageOutput = output; 25 | this.appLanguage = language; 26 | } 27 | } 28 | 29 | private const float Space = 10.0f; 30 | public const string excludeRulePath = "AssetsReporter/excludeList.txt"; 31 | 32 | public static readonly LanguageSetting[] languages = 33 | { 34 | new LanguageSetting("en","English","English"), 35 | new LanguageSetting("jp","日本語","Japanese"), 36 | }; 37 | private int selectLanguageIdx = 0; 38 | private string[] selectLanguageList; 39 | 40 | public static readonly string[] targetList = 41 | { 42 | "default", 43 | "Standalone", 44 | "iOS", 45 | "Android", 46 | "WebGL", 47 | }; 48 | 49 | private int currentTarget; 50 | private Vector2 scrollPos; 51 | 52 | private List excludeList = new List(); 53 | 54 | [MenuItem("Tools/UTJ/AssetsReporter")] 55 | public static void Create() 56 | { 57 | AssetsReporterUtils.UnzipPackageData(); 58 | EditorWindow.GetWindow(); 59 | } 60 | 61 | 62 | void OnGUI() 63 | { 64 | scrollPos = EditorGUILayout.BeginScrollView(scrollPos); 65 | 66 | 67 | OnGUISelectLanguage(); 68 | 69 | EditorGUILayout.LabelField("Platform Select"); 70 | EditorGUILayout.BeginHorizontal(); 71 | EditorGUILayout.LabelField("", GUILayout.Width(Space)); 72 | currentTarget = EditorGUILayout.Popup(currentTarget, targetList); 73 | EditorGUILayout.EndHorizontal(); 74 | 75 | EditorGUILayout.Space(); 76 | OnGUIExcludeList(); 77 | EditorGUILayout.Space(); 78 | // all 79 | OnGUIReportGroup("All Report", 80 | () => 81 | { 82 | TextureReporter.CreateReport(targetList[currentTarget], excludeList); 83 | ModelReporter.CreateReport(excludeList); 84 | AudioReporter.CreateReport(targetList[currentTarget], excludeList); 85 | AssetBundleReporter.CreateReport(false); 86 | ResourcesReporter.CreateReport(); 87 | SceneReporter.CreateReport(excludeList); 88 | }, 89 | () => 90 | { 91 | AssetsReporterUtils.OpenURL(Path.Combine("AssetsReporter", "index.html")); 92 | }); 93 | 94 | EditorGUILayout.Space(); 95 | // Texture 96 | OnGUIReportGroup("Texture Report", 97 | () => { TextureReporter.CreateReport(targetList[currentTarget], excludeList); }, 98 | TextureReporter.OpenReport); 99 | // Audios 100 | OnGUIReportGroup("Audio Report", 101 | () => { AudioReporter.CreateReport(targetList[currentTarget], excludeList); }, 102 | AudioReporter.OpenReport); 103 | // models 104 | OnGUIReportGroup("Model Report", 105 | () => { ModelReporter.CreateReport(excludeList); }, 106 | ModelReporter.OpenReport); 107 | // AssetBundles 108 | OnGUIReportGroup("AssetBundle Report", 109 | () => { AssetBundleReporter.CreateReport(true); }, 110 | AssetBundleReporter.OpenReport); 111 | // Resources 112 | OnGUIReportGroup("Resources Report", ResourcesReporter.CreateReport, ResourcesReporter.OpenReport); 113 | // Scenes 114 | OnGUIReportGroup("Scene Report", 115 | () => { SceneReporter.CreateReport(excludeList); }, 116 | SceneReporter.OpenReport); 117 | 118 | EditorGUILayout.EndScrollView(); 119 | } 120 | 121 | void OnGUISelectLanguage() 122 | { 123 | if (selectLanguageList == null) 124 | { 125 | selectLanguageList = new string[languages.Length]; 126 | for (int i = 0; i < selectLanguageList.Length; ++i) 127 | { 128 | selectLanguageList[i] = languages[i].languageOutput; 129 | } 130 | } 131 | EditorGUILayout.LabelField("Language Select"); 132 | EditorGUILayout.BeginHorizontal(); 133 | EditorGUILayout.LabelField("", GUILayout.Width(Space)); 134 | this.selectLanguageIdx = EditorGUILayout.Popup(this.selectLanguageIdx, selectLanguageList); 135 | EditorGUILayout.EndHorizontal(); 136 | } 137 | 138 | void OnEnable() 139 | { 140 | this.selectLanguageIdx = GetActiveLanguage(); 141 | this.currentTarget = GetCurrentTarget(); 142 | LoadExcludeList(); 143 | } 144 | 145 | public static int GetActiveLanguage() 146 | { 147 | string language = Application.systemLanguage.ToString(); 148 | for (int i = 0; i < languages.Length; ++i) 149 | { 150 | if (languages[i].appLanguage == language) 151 | { 152 | return i; 153 | } 154 | } 155 | return 0; 156 | } 157 | 158 | public static int GetCurrentTarget() 159 | { 160 | switch (EditorUserBuildSettings.activeBuildTarget) 161 | { 162 | case BuildTarget.StandaloneWindows: 163 | case BuildTarget.StandaloneWindows64: 164 | #if UNITY_2017_3_OR_NEWER 165 | case BuildTarget.StandaloneOSX: 166 | #else 167 | case BuildTarget.StandaloneOSXUniversal: 168 | case BuildTarget.StandaloneOSXIntel64: 169 | case BuildTarget.StandaloneOSXIntel: 170 | #endif 171 | case BuildTarget.StandaloneLinux: 172 | case BuildTarget.StandaloneLinux64: 173 | case BuildTarget.StandaloneLinuxUniversal: 174 | return 1; 175 | case BuildTarget.iOS: 176 | return 2; 177 | case BuildTarget.Android: 178 | return 3; 179 | case BuildTarget.WebGL: 180 | return 4; 181 | } 182 | return 0; 183 | } 184 | 185 | private void OnGUIExcludeList() 186 | { 187 | EditorGUILayout.BeginHorizontal(); 188 | EditorGUILayout.LabelField("Exclude List( Regex )"); 189 | if (GUILayout.Button("Save", GUILayout.Width(45))) 190 | { 191 | if (EditorUtility.DisplayDialog("Coinfirm", "Save Exclude List?", "ok", "cancel")) 192 | { 193 | SaveExcludeList(); 194 | } 195 | } 196 | if (GUILayout.Button("Load", GUILayout.Width(45))) 197 | { 198 | if (EditorUtility.DisplayDialog("Confirm", "Load Exclude List?", "ok", "cancel")) 199 | { 200 | LoadExcludeList(); 201 | } 202 | } 203 | EditorGUILayout.EndHorizontal(); 204 | 205 | int length = excludeList.Count; 206 | int removeIdx = -1; 207 | for (int i = 0; i < length; ++i) 208 | { 209 | EditorGUILayout.BeginHorizontal(); 210 | EditorGUILayout.LabelField("", GUILayout.Width(Space)); 211 | excludeList[i] = GUILayout.TextArea(excludeList[i]); 212 | if (GUILayout.Button("x", GUILayout.Width(20))) 213 | { 214 | removeIdx = i; 215 | } 216 | EditorGUILayout.EndHorizontal(); 217 | } 218 | if (removeIdx >= 0) 219 | { 220 | excludeList.RemoveAt(removeIdx); 221 | } 222 | EditorGUILayout.BeginHorizontal(); 223 | EditorGUILayout.LabelField("", GUILayout.Width(Space)); 224 | if (GUILayout.Button("Add")) 225 | { 226 | excludeList.Add(""); 227 | } 228 | EditorGUILayout.EndHorizontal(); 229 | } 230 | 231 | 232 | private void OnGUIReportGroup(string groupName, Action reportAct, Action openAct) 233 | { 234 | EditorGUILayout.LabelField(groupName); 235 | EditorGUILayout.BeginHorizontal(); 236 | EditorGUILayout.LabelField("", GUILayout.Width(Space)); 237 | if (GUILayout.Button("Report", GUILayout.Width(100))) 238 | { 239 | SaveExcludeList(); 240 | AssetsReporterUtils.WriteReportLanguage(languages[this.selectLanguageIdx].languageCode); 241 | reportAct(); 242 | openAct(); 243 | } 244 | if (GUILayout.Button("Open", GUILayout.Width(100))) 245 | { 246 | openAct(); 247 | } 248 | EditorGUILayout.EndHorizontal(); 249 | } 250 | 251 | 252 | private void SaveExcludeList() 253 | { 254 | File.WriteAllLines(excludeRulePath, excludeList.ToArray()); 255 | } 256 | private void LoadExcludeList() 257 | { 258 | excludeList = ReadExculudeList(); 259 | } 260 | private static List ReadExculudeList() 261 | { 262 | List list = null; 263 | if (File.Exists(excludeRulePath)) 264 | { 265 | list = new List(File.ReadAllLines(excludeRulePath)); 266 | } 267 | else 268 | { 269 | list = new List(); 270 | } 271 | return list; 272 | } 273 | } 274 | } -------------------------------------------------------------------------------- /Editor/GUI/AssetsReporterWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a6912d8ea451202479849352c5cfb818 3 | timeCreated: 1460597577 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/Inner.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d50150a9063156748bf69465b5bb13ad 3 | folderAsset: yes 4 | timeCreated: 1460532370 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Editor/Inner/AssetBundleReporter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System.Collections; 4 | using System.IO; 5 | using System.Collections.Generic; 6 | using System.Text; 7 | using System.Text.RegularExpressions; 8 | namespace UTJ.AssetsReporter 9 | { 10 | 11 | public class AssetBundleReporter 12 | { 13 | 14 | #region INNER_CLASS 15 | private class AssetBundleIdentify 16 | { 17 | public string file { get; private set; } 18 | public string name { get; private set; } 19 | public string valiant { get; private set; } 20 | public string importerType { get; private set; } 21 | 22 | public AssetBundleIdentify(string f, string n, string v, string t) 23 | { 24 | this.file = f; 25 | this.name = n; 26 | this.valiant = v; 27 | this.importerType = t; 28 | } 29 | 30 | public override bool Equals(object obj) 31 | { 32 | var castObj = obj as AssetBundleIdentify; 33 | if (castObj == null) { return false; } 34 | return (castObj.file == this.file); 35 | } 36 | public override int GetHashCode() 37 | { 38 | return file.GetHashCode(); 39 | } 40 | } 41 | #endregion INNER_CLASS 42 | 43 | private HashSet dependBundle; 44 | private bool createThumnailPreview; 45 | 46 | public static void CreateReport(bool thumnailFlag) 47 | { 48 | var reporter = new AssetBundleReporter(); 49 | reporter.Report(thumnailFlag); 50 | } 51 | 52 | public static void OpenReport() 53 | { 54 | Application.OpenURL(Path.Combine("AssetsReporter", "report_ab.html")); 55 | } 56 | 57 | public void Report(bool thumnailFlag) 58 | { 59 | try 60 | { 61 | this.createThumnailPreview = thumnailFlag; 62 | int idx = 0; 63 | StringBuilder sb = new StringBuilder(); 64 | 65 | string[] abnames = AssetDatabase.GetAllAssetBundleNames(); 66 | bool isFirst = true; 67 | AssetsReporterUtils.AddCurrenTimeVar(sb); 68 | AssetsReporterUtils.AddPlatformVar(sb, ""); 69 | 70 | sb.Append("g_ab_report=["); 71 | foreach (var abname in abnames) 72 | { 73 | string[] paths = AssetDatabase.GetAssetPathsFromAssetBundle(abname); 74 | if (paths == null || paths.Length == 0) { continue; } 75 | if (isFirst) { isFirst = false; } 76 | else { sb.Append(","); } 77 | CreateAssetData(sb, abname, paths); 78 | ++idx; 79 | EditorUtility.DisplayProgressBar("AssetBundleReport", abname, idx / (float)abnames.Length); 80 | } 81 | sb.Append("];"); 82 | File.WriteAllText(AssetsReporterUtils.ResultDir + "report_ab.js", sb.ToString()); 83 | } 84 | finally 85 | { 86 | EditorUtility.ClearProgressBar(); 87 | } 88 | } 89 | 90 | private void CreateAssetData(StringBuilder sb, string abname, string[] paths) 91 | { 92 | bool isFirst = true; 93 | sb.Append("{"); 94 | AssetsReporterUtils.AddJsonObject(sb, "abname", abname).Append(","); 95 | this.ClearDependsAssetBundle(); 96 | sb.Append("files:["); 97 | foreach (var path in paths) 98 | { 99 | if (isFirst) { isFirst = false; } 100 | else { sb.Append(","); } 101 | sb.Append("{"); 102 | AssetsReporterUtils.AddJsonObject(sb, "path", path).Append(","); 103 | 104 | var depends = AssetDatabase.GetDependencies(new string[] { path }); 105 | System.Array.Sort(depends); 106 | this.AddDependsAssetBundle(depends); 107 | AssetsReporterUtils.AddJsonObjectArrayWithout(sb, "depends", depends, path); 108 | System.Array.Sort(depends); 109 | 110 | UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath(path); 111 | if (obj != null) 112 | { 113 | sb.Append(","); 114 | AssetsReporterUtils.AddJsonObject(sb, "type", obj.GetType().Name); 115 | if (obj.GetType() != typeof(GameObject)) 116 | { 117 | Resources.UnloadAsset(obj); 118 | } 119 | // thumnail 120 | { 121 | if (obj.GetType() == typeof(Texture2D) && !AssetsReporterUtils.IsVisibleInWebBrowserImage(path)) 122 | { 123 | sb.Append(","); 124 | string preview = AssetsReporterUtils.GetWebVisibleTexturePreview(TextureImporter.GetAtPath(path) as TextureImporter, obj as Texture2D, this.createThumnailPreview); 125 | AssetsReporterUtils.AddJsonObject(sb, "preview", preview); 126 | } 127 | else if (obj.GetType() == typeof(GameObject)) 128 | { 129 | sb.Append(","); 130 | var assetImporter = AssetImporter.GetAtPath(path); 131 | string preview = AssetsReporterUtils.GetAssetPreview(assetImporter, obj, this.createThumnailPreview || ((assetImporter as ModelImporter) == null)); 132 | AssetsReporterUtils.AddJsonObject(sb, "preview", preview); 133 | } 134 | } 135 | 136 | obj = null; 137 | } 138 | sb.Append("}"); 139 | } 140 | sb.Append("],\n"); 141 | this.RemoveDependsAssetBundle(paths); 142 | this.ReportDependsAssetBundle(sb); 143 | sb.Append("}\n"); 144 | } 145 | 146 | private void ReportDependsAssetBundle(StringBuilder sb) 147 | { 148 | bool isFirst = true; 149 | sb.Append("depends:["); 150 | List list = new List(this.dependBundle); 151 | list.Sort((a, b) => 152 | { 153 | int tmp = a.importerType.CompareTo(b.importerType); 154 | if (tmp != 0) { return tmp; } 155 | return a.file.CompareTo(b.file); 156 | }); 157 | foreach (var d in list) 158 | { 159 | if (isFirst) { isFirst = false; } 160 | else { sb.Append(","); } 161 | sb.Append("{"); 162 | AssetsReporterUtils.AddJsonObject(sb, "file", d.file).Append(","); 163 | AssetsReporterUtils.AddJsonObject(sb, "name", d.name).Append(","); 164 | AssetsReporterUtils.AddJsonObject(sb, "valiant", d.valiant).Append(","); 165 | AssetsReporterUtils.AddJsonObject(sb, "importerType", d.importerType.Replace("Importer", "")); 166 | sb.Append("}"); 167 | } 168 | sb.Append("]"); 169 | } 170 | private void RemoveDependsAssetBundle(string[] paths) 171 | { 172 | if (paths == null) { return; } 173 | foreach (var path in paths) 174 | { 175 | this.dependBundle.Remove(new AssetBundleIdentify(path, "", "", "")); 176 | } 177 | } 178 | 179 | private void ClearDependsAssetBundle() 180 | { 181 | if (this.dependBundle == null) 182 | { 183 | this.dependBundle = new HashSet(); 184 | } 185 | else 186 | { 187 | this.dependBundle.Clear(); 188 | } 189 | } 190 | 191 | private void AddDependsAssetBundle(string[] depends) 192 | { 193 | foreach (string d in depends) 194 | { 195 | string importerName = ""; 196 | string importerValiant = ""; 197 | string importerType = ""; 198 | var importer = GetAssetBundleNamedDirectoryImporter(d); 199 | if (importer != null) 200 | { 201 | importerType = importer.GetType().Name; 202 | importerName = importer.assetBundleName; 203 | importerValiant = importer.assetBundleVariant; 204 | #if UNITY_5_6_OR_NEWER 205 | if (string.IsNullOrEmpty(importerName)) 206 | { 207 | importerName = AssetDatabase.GetImplicitAssetBundleName( d ); 208 | importerValiant = AssetDatabase.GetImplicitAssetBundleVariantName(d); 209 | } 210 | #endif 211 | } 212 | var assetBundleId = new AssetBundleIdentify(d, importerName, importerValiant, importerType); 213 | if (!this.dependBundle.Contains(assetBundleId)) 214 | { 215 | this.dependBundle.Add(assetBundleId); 216 | } 217 | } 218 | } 219 | 220 | private static AssetImporter GetAssetBundleNamedDirectoryImporter(string path) 221 | { 222 | var originImporter = AssetImporter.GetAtPath(path); 223 | #if !UNITY_5_6_OR_NEWER 224 | if (!string.IsNullOrEmpty(originImporter.assetBundleName)) 225 | { 226 | return originImporter; 227 | } 228 | 229 | int length = path.Length; 230 | StringBuilder sb = new StringBuilder(length); 231 | sb.Append(path); 232 | 233 | int idx = length - 1; 234 | while (idx > 0) 235 | { 236 | int next = path.LastIndexOf('/', idx - 1); 237 | if (next <= 0) 238 | { 239 | break; 240 | } 241 | sb.Length = next; 242 | 243 | var importer = AssetImporter.GetAtPath(sb.ToString()); 244 | if (!string.IsNullOrEmpty(importer.assetBundleName)) 245 | { 246 | return importer; 247 | } 248 | idx = next; 249 | } 250 | #endif 251 | return originImporter; 252 | } 253 | } 254 | } -------------------------------------------------------------------------------- /Editor/Inner/AssetBundleReporter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 331d16bc9f785a5458bed43b1c13dfb9 3 | timeCreated: 1460950483 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/Inner/AssetsReporterLanguageData.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | namespace UTJ.AssetsReporter 5 | { 6 | 7 | public class AssetsReporterLanguageData 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Editor/Inner/AssetsReporterLanguageData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94c28f4c254891941bbbf60b950947d0 3 | timeCreated: 1466496993 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/Inner/AssetsReporterUtils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Text.RegularExpressions; 6 | using System.IO; 7 | using UnityEngine; 8 | using UnityEditor; 9 | //using UnityEditor.iOS; 10 | #if UNITY_2017_3_OR_NEWER 11 | using UnityEngine.Rendering; 12 | #endif 13 | 14 | namespace UTJ.AssetsReporter 15 | { 16 | 17 | 18 | public class AssetsReporterUtils 19 | { 20 | private const string ResourceVersion = "20200529"; 21 | 22 | 23 | public const string DestParentDir = "AssetsReporter"; 24 | public const string ResultDir = DestParentDir + "/result/"; 25 | public const string PreviewDir = DestParentDir + "/result/preview/"; 26 | private const string VersionFile = DestParentDir + "/version.txt"; 27 | 28 | public static void WriteReportLanguage(string lang) 29 | { 30 | StringBuilder sb = new StringBuilder(); 31 | sb.Append("g_language=\""); 32 | sb.Append(lang); 33 | sb.Append("\";\n"); 34 | 35 | File.WriteAllText(ResultDir + "report_language.js", sb.ToString()); 36 | 37 | } 38 | 39 | public static StringBuilder AddJsonObject(StringBuilder sb, string key, string val) 40 | { 41 | sb.Append(key).Append(":\"").Append(val).Append('"'); 42 | return sb; 43 | } 44 | 45 | public static StringBuilder AddJsonObjectArray(StringBuilder sb, string key, string[] arr) 46 | { 47 | sb.Append(key).Append(":["); 48 | bool isFirst = true; 49 | if (arr != null) 50 | { 51 | foreach (var val in arr) 52 | { 53 | if (isFirst) { isFirst = false; } 54 | else { sb.Append(','); } 55 | sb.Append('"').Append(val).Append('"'); 56 | } 57 | } 58 | sb.Append("]"); 59 | return sb; 60 | } 61 | 62 | public static StringBuilder AddJsonObject(StringBuilder sb, string key, float val) 63 | { 64 | sb.Append(key).Append(":\"").Append(val).Append('"'); 65 | return sb; 66 | } 67 | 68 | public static StringBuilder AddJsonObject(StringBuilder sb, string key, bool val) 69 | { 70 | sb.Append(key).Append(":"); 71 | if (val) 72 | { 73 | sb.Append("true"); 74 | } 75 | else 76 | { 77 | sb.Append("false"); 78 | } 79 | return sb; 80 | } 81 | 82 | public static StringBuilder AddJsonObject(StringBuilder sb, string key, int val) 83 | { 84 | sb.Append(key).Append(":").Append(val); 85 | return sb; 86 | } 87 | 88 | public static StringBuilder AddJsonToContDictionary(StringBuilder sb, string key, Dictionary set) 89 | { 90 | sb.Append(key).Append(":"); 91 | AddCountDictCore(sb, set); 92 | return sb; 93 | } 94 | 95 | public static void AddCountVarObject(StringBuilder sb, string varname, Dictionary set) 96 | { 97 | sb.Append(varname).Append("="); 98 | AddCountDictCore(sb, set); 99 | sb.Append(";\n"); 100 | } 101 | private static void AddCountDictCore(StringBuilder sb, Dictionary set) 102 | { 103 | sb.Append("["); 104 | bool isFirst = true; 105 | foreach (var format in set) 106 | { 107 | if (isFirst) 108 | { 109 | isFirst = false; 110 | } 111 | else 112 | { 113 | sb.Append(','); 114 | } 115 | sb.Append("{val:"); 116 | sb.Append('"').Append(format.Key.ToString()).Append('"'); 117 | sb.Append(",cnt:").Append('"').Append(format.Value).Append('"'); 118 | sb.Append("}"); 119 | } 120 | sb.Append("]"); 121 | } 122 | 123 | public static bool IsPathMatch(string path, List list) 124 | { 125 | if (list == null) 126 | { 127 | return false; 128 | } 129 | foreach (var pattern in list) 130 | { 131 | Regex reg = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline); 132 | if (reg.IsMatch(path)) 133 | { 134 | return true; 135 | } 136 | } 137 | return false; 138 | } 139 | 140 | public static void AddCountDictionary(Dictionary dict, T key) 141 | { 142 | if (!dict.ContainsKey(key)) 143 | { 144 | dict.Add(key, 1); 145 | return; 146 | } 147 | dict[key] += 1; 148 | } 149 | 150 | public static void AddCurrenTimeVar(StringBuilder sb) 151 | { 152 | var now = DateTime.Now; 153 | sb.Append("g_report_at=\""); 154 | sb.Append(now.ToString()); 155 | sb.Append("\";\n"); 156 | } 157 | 158 | public static void AddPlatformVar(StringBuilder sb, string platform) 159 | { 160 | sb.Append("g_report_platform=\""); 161 | sb.Append(platform); 162 | sb.Append("\";\n"); 163 | } 164 | 165 | public static void SaveTexture2d(string path, Texture2D tex) 166 | { 167 | if (tex == null) { return; } 168 | #if UNITY_2017_3_OR_NEWER 169 | File.WriteAllBytes(path, ImageConversion.EncodeToPNG(tex)); 170 | #else 171 | File.WriteAllBytes(path, tex.EncodeToPNG()); 172 | #endif 173 | } 174 | 175 | public static string GetAssetPreview(AssetImporter importer, UnityEngine.Object obj, bool createFlag) 176 | { 177 | if (importer == null || obj == null) 178 | { 179 | return ""; 180 | } 181 | string guid = AssetDatabase.AssetPathToGUID(importer.assetPath); 182 | string file = guid + ".png"; 183 | if (!createFlag) 184 | { 185 | return file; 186 | } 187 | 188 | // var gmo = GameObject.Instantiate(obj); 189 | var tex = AssetPreview.GetAssetPreview(obj); 190 | 191 | tex = AssetPreview.GetAssetPreview(obj); 192 | for (int i = 0; i < 100; ++i) 193 | { 194 | if (obj != null && tex == null) 195 | { 196 | tex = AssetPreview.GetAssetPreview(obj); 197 | System.Threading.Thread.Sleep(10); 198 | } 199 | } 200 | if (tex != null) 201 | { 202 | AssetsReporterUtils.SaveTexture2d(AssetsReporterUtils.PreviewDir + file, tex); 203 | tex = null; 204 | } 205 | return file; 206 | } 207 | 208 | static int cnt = 0; 209 | public static string GetWebVisibleTexturePreview(TextureImporter importer, Texture2D tex, bool createFlag) 210 | { 211 | if (importer == null || tex == null) 212 | { 213 | return ""; 214 | } 215 | string guid = AssetDatabase.AssetPathToGUID(importer.assetPath); 216 | string file = guid + ".png"; 217 | if (!createFlag) { return file; } 218 | 219 | 220 | var backupActive = RenderTexture.active; 221 | RenderTexture renderTexture = new RenderTexture(tex.width, tex.height, 0); 222 | CommandBuffer cmd = new CommandBuffer(); 223 | cmd.Blit(tex, renderTexture); 224 | Graphics.ExecuteCommandBuffer(cmd); 225 | cmd.Dispose(); 226 | 227 | RenderTexture.active = renderTexture; 228 | var saveTex = new Texture2D(tex.width, tex.height, TextureFormat.RGBA32, false); 229 | saveTex.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0); 230 | AssetsReporterUtils.SaveTexture2d(AssetsReporterUtils.PreviewDir + file, saveTex); 231 | 232 | RenderTexture.active = backupActive; 233 | renderTexture.Release(); 234 | 235 | return file; 236 | } 237 | 238 | public static bool IsVisibleInWebBrowserImage(string path) 239 | { 240 | path = path.ToLower(); 241 | if (path.EndsWith(".png")) { return true; } 242 | if (path.EndsWith(".jpg")) { return true; } 243 | if (path.EndsWith(".bmp")) { return true; } 244 | if (path.EndsWith(".gif")) { return true; } 245 | return false; 246 | } 247 | 248 | 249 | public static void CreatePreviewDir() 250 | { 251 | string dir = "AssetsReporter/result/preview"; 252 | Directory.CreateDirectory(dir); 253 | } 254 | 255 | public static int GetPolygonNum(GameObject obj) 256 | { 257 | int num = 0; 258 | MeshFilter[] meshFilters = obj.GetComponentsInChildren(true); 259 | foreach (var meshFileter in meshFilters) 260 | { 261 | if (meshFileter.sharedMesh == null) { continue; } 262 | num += meshFileter.sharedMesh.vertexCount; 263 | } 264 | SkinnedMeshRenderer[] skinRenders = obj.GetComponentsInChildren(true); 265 | foreach (var skinRender in skinRenders) 266 | { 267 | if (skinRender.sharedMesh == null) { continue; } 268 | num += skinRender.sharedMesh.vertexCount; 269 | } 270 | return num; 271 | } 272 | 273 | public static StringBuilder AddJsonObjectArrayWithout(StringBuilder sb, string key, string[] arr, string without) 274 | { 275 | sb.Append(key).Append(":["); 276 | bool isFirst = true; 277 | if (arr != null) 278 | { 279 | foreach (var val in arr) 280 | { 281 | if (val == without) { continue; } 282 | if (isFirst) { isFirst = false; } 283 | else { sb.Append(','); } 284 | sb.Append('"').Append(val).Append('"'); 285 | } 286 | } 287 | sb.Append("]"); 288 | return sb; 289 | } 290 | 291 | public static void OpenURL(string url) 292 | { 293 | #if UNITY_EDITOR_WIN 294 | Application.OpenURL(url); 295 | #else 296 | System.Diagnostics.Process.Start("file:///" + System.IO.Directory.GetCurrentDirectory() + "/" + url); 297 | #endif 298 | } 299 | 300 | public static void UnzipPackageData(){ 301 | if (IsAlreadyInstalled()) 302 | { 303 | return; 304 | } 305 | string packageFilePath = "Packages/com.utj.assetsreporter/ReporterResource"; 306 | int packageFilePathLength = packageFilePath.Length; 307 | var guids = AssetDatabase.FindAssets("", new string[] { packageFilePath }); 308 | foreach( var guid in guids) 309 | { 310 | string path = AssetDatabase.GUIDToAssetPath(guid); 311 | string subPath = path.Substring(packageFilePathLength + 1); 312 | if(!subPath.Contains('.')) 313 | { 314 | continue; 315 | } 316 | string dest = DestParentDir + '/' + subPath; 317 | string destDir = dest.Substring(0,dest.LastIndexOf('/') ); 318 | 319 | if (!Directory.Exists(destDir)) 320 | { 321 | Directory.CreateDirectory(destDir); 322 | } 323 | if(dest.EndsWith("excludeList.txt")) 324 | { 325 | if(File.Exists(dest)) 326 | { 327 | continue; 328 | } 329 | } 330 | AssetDatabase.CopyAsset(path, dest); 331 | } 332 | File.WriteAllText(VersionFile, ResourceVersion); 333 | } 334 | private static bool IsAlreadyInstalled() 335 | { 336 | if(!File.Exists(VersionFile)) 337 | { 338 | return false; 339 | } 340 | var version = File.ReadAllText(VersionFile); 341 | return (ResourceVersion == version); 342 | } 343 | } 344 | } -------------------------------------------------------------------------------- /Editor/Inner/AssetsReporterUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b7c96057a72e0b42a847bdc30189be6 3 | timeCreated: 1460532370 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/Inner/AudioReporter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System.Collections; 4 | using System.Text; 5 | using System.IO; 6 | using System.Collections.Generic; 7 | 8 | namespace UTJ.AssetsReporter 9 | { 10 | 11 | public class AudioReporter 12 | { 13 | private string platform; 14 | private List excludeList; 15 | private Dictionary ratingSet; 16 | private Dictionary compressSet; 17 | private Dictionary loadTypeSet; 18 | 19 | public static void CreateReport(string pl, List exList) 20 | { 21 | var reporter = new AudioReporter(pl, exList); 22 | reporter.ReportAudio(AssetsReporterUtils.ResultDir + "report_audio.js"); 23 | } 24 | 25 | public AudioReporter(string pl, List exList) 26 | { 27 | if (pl == "default") { pl = ""; } 28 | this.platform = pl; 29 | this.excludeList = exList; 30 | } 31 | 32 | public static void OpenReport() 33 | { 34 | AssetsReporterUtils.OpenURL(Path.Combine("AssetsReporter", "report_audio.html")); 35 | } 36 | 37 | public void ReportAudio(string reportPath) 38 | { 39 | try 40 | { 41 | this.ratingSet = new Dictionary(); 42 | this.compressSet = new Dictionary(); 43 | this.loadTypeSet = new Dictionary(); 44 | 45 | StringBuilder sb = new StringBuilder(1024 * 1024); 46 | AssetsReporterUtils.AddCurrenTimeVar(sb); 47 | int idx = 0; 48 | bool isFirst = true; 49 | var guids = AssetDatabase.FindAssets("t:audioclip"); 50 | sb.Append("g_audio_report=["); 51 | foreach (var guid in guids) 52 | { 53 | string path = AssetDatabase.GUIDToAssetPath(guid); 54 | var audioImporter = AssetImporter.GetAtPath(path) as AudioImporter; 55 | if (audioImporter == null || AssetsReporterUtils.IsPathMatch(path, excludeList)) { continue; } 56 | if (isFirst) 57 | { 58 | isFirst = false; 59 | } 60 | else 61 | { 62 | sb.Append(','); 63 | } 64 | ReportAudio(sb, audioImporter); 65 | ++idx; 66 | EditorUtility.DisplayProgressBar("Progress", path, (float)idx / (float)guids.Length); 67 | } 68 | sb.Append("];"); 69 | AssetsReporterUtils.AddCountVarObject(sb, "g_audio_rating_list", this.ratingSet); 70 | AssetsReporterUtils.AddCountVarObject(sb, "g_audio_loadtype_list", this.loadTypeSet); 71 | AssetsReporterUtils.AddCountVarObject(sb, "g_audio_compress_list", this.compressSet); 72 | AssetsReporterUtils.AddPlatformVar(sb, this.platform); 73 | File.WriteAllText(reportPath, sb.ToString()); 74 | } 75 | finally 76 | { 77 | EditorUtility.ClearProgressBar(); 78 | } 79 | } 80 | private void ReportAudio(StringBuilder sb, AudioImporter importer) 81 | { 82 | /// common 83 | sb.Append("{"); 84 | AssetsReporterUtils.AddJsonObject(sb, "path", importer.assetPath).Append(","); 85 | AssetsReporterUtils.AddJsonObject(sb, "forceToMono", importer.forceToMono).Append(","); 86 | AssetsReporterUtils.AddJsonObject(sb, "loadInBackground", importer.loadInBackground).Append(","); 87 | AssetsReporterUtils.AddJsonObject(sb, "preloadAudioData", importer.preloadAudioData).Append(","); 88 | // platform setting 89 | AudioImporterSampleSettings setting = importer.defaultSampleSettings; 90 | if (!string.IsNullOrEmpty(platform) && importer.ContainsSampleSettingsOverride(platform)) 91 | { 92 | setting = importer.GetOverrideSampleSettings(platform); 93 | } 94 | AssetsReporterUtils.AddJsonObject(sb, "loadType", setting.loadType.ToString()).Append(","); 95 | AssetsReporterUtils.AddJsonObject(sb, "compressionFormat", setting.compressionFormat.ToString()).Append(","); 96 | AssetsReporterUtils.AddJsonObject(sb, "sampleRateSetting", setting.sampleRateSetting.ToString()).Append(","); 97 | AssetsReporterUtils.AddJsonObject(sb, "sampleRateOverride", setting.sampleRateOverride.ToString()); 98 | sb.Append("}"); 99 | 100 | AssetsReporterUtils.AddCountDictionary(this.loadTypeSet, setting.loadType); 101 | AssetsReporterUtils.AddCountDictionary(this.ratingSet, setting.sampleRateOverride); 102 | AssetsReporterUtils.AddCountDictionary(this.compressSet, setting.compressionFormat); 103 | } 104 | } 105 | } -------------------------------------------------------------------------------- /Editor/Inner/AudioReporter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64291e17d62f7f64197fd67517ab837f 3 | timeCreated: 1460515858 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/Inner/ModelReporter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System.Collections; 4 | using System.IO; 5 | using System.Threading; 6 | using System.Collections.Generic; 7 | using System.Text; 8 | using System.Text.RegularExpressions; 9 | 10 | namespace UTJ.AssetsReporter 11 | { 12 | 13 | public class ModelReporter 14 | { 15 | 16 | 17 | private List excludeList = new List(); 18 | private bool isPreviewImage = true; 19 | 20 | private Dictionary scaleSet; 21 | private Dictionary rigSet; 22 | private Dictionary sourceAvatarSet; 23 | 24 | // private Dictionary textureTypeSet = new Dictionary(); 25 | 26 | /// 27 | /// Create Window 28 | /// 29 | public static void CreateReport(List exList) 30 | { 31 | var reporter = new ModelReporter(exList); 32 | reporter.ReportModel(AssetsReporterUtils.ResultDir + "report_model.js"); 33 | } 34 | public static void OpenReport() 35 | { 36 | AssetsReporterUtils.OpenURL(Path.Combine("AssetsReporter", "report_model.html")); 37 | } 38 | 39 | public ModelReporter(List exList) 40 | { 41 | this.excludeList = exList; 42 | } 43 | 44 | public void ReportModel(string reportPath) 45 | { 46 | try 47 | { 48 | scaleSet = new Dictionary(); 49 | rigSet = new Dictionary(); 50 | sourceAvatarSet = new Dictionary(); 51 | if (isPreviewImage) 52 | { 53 | AssetsReporterUtils.CreatePreviewDir(); 54 | } 55 | 56 | var guids = AssetDatabase.FindAssets("t:model", null); 57 | var sb = new StringBuilder(1024 * 1024); 58 | int idx = 0; 59 | bool isFirst = true; 60 | AssetsReporterUtils.AddCurrenTimeVar(sb); 61 | sb.Append("g_model_report = ["); 62 | foreach (var guid in guids) 63 | { 64 | string path = AssetDatabase.GUIDToAssetPath(guid); 65 | var modelImporter = AssetImporter.GetAtPath(path) as ModelImporter; 66 | if (modelImporter == null || AssetsReporterUtils.IsPathMatch(path, excludeList)) 67 | { 68 | continue; 69 | } 70 | if (isFirst) 71 | { 72 | isFirst = false; 73 | } 74 | else 75 | { 76 | sb.Append(","); 77 | } 78 | ReportModel(sb, modelImporter); 79 | 80 | sb.Append("\n"); 81 | EditorUtility.DisplayProgressBar("Progress", path, (float)idx / (float)guids.Length); 82 | ++idx; 83 | } 84 | sb.Append("];"); 85 | AssetsReporterUtils.AddCountVarObject(sb, "g_model_rig_list", rigSet); 86 | AssetsReporterUtils.AddCountVarObject(sb, "g_model_scale_list", scaleSet); 87 | AssetsReporterUtils.AddCountVarObject(sb, "g_model_avatar_list", sourceAvatarSet); 88 | AssetsReporterUtils.AddPlatformVar(sb, ""); 89 | File.WriteAllText(reportPath, sb.ToString()); 90 | } 91 | finally 92 | { 93 | EditorUtility.ClearProgressBar(); 94 | } 95 | } 96 | 97 | private void ReportModel(StringBuilder sb, ModelImporter importer) 98 | { 99 | sb.Append("{"); 100 | AssetsReporterUtils.AddJsonObject(sb, "path", importer.assetPath).Append(","); 101 | if (this.isPreviewImage) 102 | { 103 | var obj = AssetDatabase.LoadAssetAtPath(importer.assetPath); 104 | 105 | string preview = AssetsReporterUtils.GetAssetPreview(importer, obj, true); 106 | AssetsReporterUtils.AddJsonObject(sb, "preview", preview).Append(","); 107 | 108 | AssetsReporterUtils.AddJsonObject(sb, "vertexNum", AssetsReporterUtils.GetPolygonNum(obj)).Append(","); 109 | } 110 | AssetsReporterUtils.AddJsonObject(sb, "isReadable", importer.isReadable).Append(","); 111 | AssetsReporterUtils.AddJsonObject(sb, "scaleFactor", importer.globalScale).Append(","); 112 | AssetsReporterUtils.AddJsonObject(sb, "meshCompression", importer.meshCompression.ToString()).Append(","); 113 | AssetsReporterUtils.AddJsonObject(sb, "generateCollider", importer.addCollider).Append(","); 114 | #if UNITY_2020_2_OR_NEWER 115 | AssetsReporterUtils.AddJsonObject(sb, "materialImportMode", importer.materialImportMode.ToString()).Append(","); 116 | AssetsReporterUtils.AddJsonObject(sb, "optimizeMeshPolygons", importer.optimizeMeshPolygons).Append(","); 117 | AssetsReporterUtils.AddJsonObject(sb, "optimizeMeshVertices", importer.optimizeMeshVertices).Append(","); 118 | // 互換性 119 | AssetsReporterUtils.AddJsonObject(sb, "optimizeMesh", importer.optimizeMeshVertices | importer.optimizeMeshPolygons).Append(","); 120 | #else 121 | AssetsReporterUtils.AddJsonObject(sb, "importMaterials", importer.importMaterials).Append(","); 122 | AssetsReporterUtils.AddJsonObject(sb, "optimizeMesh", importer.optimizeMesh).Append(","); 123 | #endif 124 | #if UNITY_5_4_OR_NEWER 125 | AssetsReporterUtils.AddJsonObject(sb, "normalMode", importer.importNormals.ToString()).Append(","); 126 | AssetsReporterUtils.AddJsonObject(sb, "tangentMode", importer.importTangents.ToString()).Append(","); 127 | #else 128 | AssetsReporterUtils.AddJsonObject(sb, "normalMode", importer.normalImportMode.ToString()).Append(","); 129 | AssetsReporterUtils.AddJsonObject(sb, "tangentMode", importer.tangentImportMode.ToString()).Append(","); 130 | #endif 131 | AssetsReporterUtils.AddJsonObject(sb, "importBlendShapes", importer.importBlendShapes).Append(","); 132 | AssetsReporterUtils.AddJsonObject(sb, "objectNum", importer.transformPaths.Length).Append(","); 133 | // rig 134 | AssetsReporterUtils.AddJsonObject(sb, "animationType", importer.animationType.ToString()).Append(","); 135 | AssetsReporterUtils.AddJsonObject(sb, "generateAnimations", importer.generateAnimations.ToString()).Append(","); 136 | string srcAvatar = GetAvatarName(importer.animationType, importer.sourceAvatar); 137 | AssetsReporterUtils.AddJsonObject(sb, "sourceAvatar", srcAvatar).Append(","); 138 | // animation 139 | AssetsReporterUtils.AddJsonObject(sb, "importAnimation", importer.importAnimation).Append(","); 140 | AssetsReporterUtils.AddJsonObject(sb, "animationCompression", importer.animationCompression.ToString()).Append(","); 141 | if (importer.clipAnimations != null && importer.clipAnimations.Length > 0) 142 | { 143 | ReportModelAnimationClips(sb, importer.clipAnimations); 144 | } 145 | else 146 | { 147 | ReportModelAnimationClips(sb, importer.defaultClipAnimations); 148 | } 149 | // 150 | AssetsReporterUtils.AddCountDictionary(rigSet, importer.animationType); 151 | AssetsReporterUtils.AddCountDictionary(scaleSet, importer.globalScale); 152 | if (!string.IsNullOrEmpty(srcAvatar)) 153 | { 154 | AssetsReporterUtils.AddCountDictionary(sourceAvatarSet, srcAvatar); 155 | } 156 | sb.Append("}"); 157 | } 158 | private string GetAvatarName(ModelImporterAnimationType type, Avatar avatar) 159 | { 160 | if (type == ModelImporterAnimationType.None || type == ModelImporterAnimationType.Legacy) 161 | { 162 | return "No Avatar"; 163 | } 164 | if (avatar == null) { return "Create From This Model"; } 165 | StringBuilder sb = new StringBuilder(avatar.name.Length + 32); 166 | sb.Append(avatar.name).Append("(").Append(avatar.GetInstanceID()).Append(")"); 167 | return sb.ToString(); 168 | } 169 | 170 | private void ReportModelAnimationClips(StringBuilder sb, ModelImporterClipAnimation[] clipAnimations) 171 | { 172 | if (clipAnimations == null) 173 | { 174 | AssetsReporterUtils.AddJsonObjectArray(sb, "animationClips", null); 175 | } 176 | bool isFirst = true; 177 | sb.Append("animationClips:["); 178 | for (int i = 0; i < clipAnimations.Length; ++i) 179 | { 180 | if (isFirst) { isFirst = false; } 181 | else { sb.Append(","); } 182 | sb.Append("{"); 183 | AssetsReporterUtils.AddJsonObject(sb, "name", clipAnimations[i].name).Append(","); 184 | AssetsReporterUtils.AddJsonObject(sb, "firstFrame", clipAnimations[i].firstFrame).Append(","); 185 | AssetsReporterUtils.AddJsonObject(sb, "lastFrame", clipAnimations[i].lastFrame).Append(","); 186 | AssetsReporterUtils.AddJsonObject(sb, "wrapMode", clipAnimations[i].wrapMode.ToString()).Append(","); 187 | AssetsReporterUtils.AddJsonObject(sb, "loop", clipAnimations[i].loop); 188 | sb.Append("}"); 189 | } 190 | sb.Append("]"); 191 | } 192 | } 193 | } -------------------------------------------------------------------------------- /Editor/Inner/ModelReporter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cec8b25cbcd31fd4d9e80f51d6d9c536 3 | timeCreated: 1460685699 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/Inner/ResourcesReporter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System; 4 | using System.Collections; 5 | using System.Collections.Generic; 6 | using System.Text; 7 | using System.IO; 8 | 9 | namespace UTJ.AssetsReporter 10 | { 11 | 12 | public class ResourcesReporter 13 | { 14 | 15 | private HashSet dependSet = new HashSet(); 16 | private List resourceAssetList = new List(); 17 | private Dictionary fileTypeDict = new Dictionary(); 18 | 19 | private Dictionary typeDict = new Dictionary(); 20 | private Dictionary parentDirDict = new Dictionary(); 21 | 22 | 23 | public static void CreateReport() 24 | { 25 | var reporter = new ResourcesReporter(); 26 | reporter.ReportResources(AssetsReporterUtils.ResultDir + "report_resources.js"); 27 | } 28 | 29 | public static void OpenReport() 30 | { 31 | AssetsReporterUtils.OpenURL(Path.Combine("AssetsReporter", "report_resources.html")); 32 | } 33 | 34 | public ResourcesReporter() 35 | { 36 | } 37 | 38 | public void ReportResources(string reportPath) 39 | { 40 | try 41 | { 42 | var sb = new StringBuilder(1024 * 1024); 43 | bool isFirst = true; 44 | AssetsReporterUtils.AddCurrenTimeVar(sb); 45 | sb.Append("g_resources_report = ["); 46 | var allAssetPath = AssetDatabase.GetAllAssetPaths(); 47 | foreach (var assetPath in allAssetPath) 48 | { 49 | if (!assetPath.Contains("/Resources/")) 50 | { 51 | continue; 52 | } 53 | if (isFirst) { isFirst = false; } 54 | else { sb.Append(','); } 55 | sb.Append("\n"); 56 | this.resourceAssetList.Add(assetPath); 57 | this.ReportOneResource(sb, assetPath); 58 | this.SetParentDictionarySet(assetPath); 59 | } 60 | sb.Append("];\n"); 61 | this.ReportDependsAssets(sb); 62 | 63 | AssetsReporterUtils.AddCountVarObject(sb, "g_resources_type_list", this.typeDict); 64 | AssetsReporterUtils.AddCountVarObject(sb, "g_resources_parent_dir_list", this.parentDirDict); 65 | AssetsReporterUtils.AddPlatformVar(sb, ""); 66 | File.WriteAllText(reportPath, sb.ToString()); 67 | } 68 | finally 69 | { 70 | EditorUtility.ClearProgressBar(); 71 | } 72 | } 73 | 74 | private void ReportDependsAssets(StringBuilder sb) 75 | { 76 | foreach (var asset in this.resourceAssetList) 77 | { 78 | this.dependSet.Remove(asset); 79 | } 80 | bool isFirst = true; 81 | sb.Append("g_resources_depends=["); 82 | foreach (var depend in dependSet) 83 | { 84 | if (isFirst) { isFirst = false; } 85 | else { sb.Append(","); } 86 | sb.Append("\n"); 87 | sb.Append("{"); 88 | AssetsReporterUtils.AddJsonObject(sb, "path", depend).Append(","); 89 | AssetsReporterUtils.AddJsonObject(sb, "type", this.GetFileType(depend).ToString()); 90 | sb.Append("}"); 91 | } 92 | sb.Append("];"); 93 | } 94 | 95 | private void ReportOneResource(StringBuilder sb, string assetPath) 96 | { 97 | var depends = AssetDatabase.GetDependencies(new string[] { assetPath }); 98 | 99 | Type type = this.GetFileType(assetPath); 100 | AssetsReporterUtils.AddCountDictionary(this.typeDict, type); 101 | 102 | sb.Append("{"); 103 | AssetsReporterUtils.AddJsonObject(sb, "path", assetPath).Append(","); 104 | AssetsReporterUtils.AddJsonObject(sb, "type", type.ToString()).Append(","); 105 | AssetsReporterUtils.AddJsonObject(sb, "parentDir", this.GetParentDirectory(assetPath)).Append(","); 106 | 107 | sb.Append("depends:["); 108 | bool isFirst = true; 109 | foreach (var d in depends) 110 | { 111 | if (d == assetPath) { continue; } 112 | if (isFirst) { isFirst = false; } 113 | else { sb.Append(","); } 114 | sb.Append("{"); 115 | AssetsReporterUtils.AddJsonObject(sb, "path", d).Append(","); 116 | AssetsReporterUtils.AddJsonObject(sb, "type", this.GetFileType(d).ToString()); 117 | sb.Append("}"); 118 | } 119 | sb.Append("]"); 120 | foreach (var depend in depends) 121 | { 122 | if (!this.dependSet.Contains(depend)) 123 | { 124 | this.dependSet.Add(depend); 125 | } 126 | } 127 | sb.Append("}"); 128 | } 129 | 130 | private Type GetFileType(string path) 131 | { 132 | if (fileTypeDict.ContainsKey(path)) 133 | { 134 | return fileTypeDict[path]; 135 | } 136 | UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath(path); 137 | if (obj == null) 138 | { 139 | return typeof(System.Object); 140 | } 141 | var type = obj.GetType(); 142 | if (type != typeof(GameObject)) 143 | { 144 | Resources.UnloadAsset(obj); 145 | } 146 | obj = null; 147 | this.fileTypeDict.Add(path, type); 148 | return type; 149 | } 150 | 151 | private string GetParentDirectory(string path) 152 | { 153 | int idx = path.IndexOf("/Resources/"); 154 | if (idx < 0) 155 | { 156 | return ""; 157 | } 158 | string parent = path.Substring(0, idx); 159 | return parent; 160 | } 161 | 162 | private void SetParentDictionarySet(string path) 163 | { 164 | string parent = this.GetParentDirectory(path); 165 | AssetsReporterUtils.AddCountDictionary(this.parentDirDict, parent); 166 | } 167 | 168 | } 169 | } -------------------------------------------------------------------------------- /Editor/Inner/ResourcesReporter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d4e69dd09c75e1428c46fa3306bb4c0 3 | timeCreated: 1463473142 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/Inner/SceneReporter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System; 5 | using System.Text; 6 | 7 | using UnityEngine; 8 | using UnityEditor; 9 | using UnityEditor.SceneManagement; 10 | 11 | namespace UTJ.AssetsReporter 12 | { 13 | 14 | public class SceneReporter 15 | { 16 | 17 | private List excludeList = new List(); 18 | 19 | private SceneReporter(List exList) 20 | { 21 | 22 | this.excludeList = exList; 23 | } 24 | 25 | private List GetAllScenePath() 26 | { 27 | var guids = AssetDatabase.FindAssets("t:scene", null); 28 | List allScenePath = new List(guids.Length); 29 | foreach (var guid in guids) 30 | { 31 | allScenePath.Add(AssetDatabase.GUIDToAssetPath(guid)); 32 | } 33 | return allScenePath; 34 | } 35 | 36 | public static void CreateReport(List exList) 37 | { 38 | var reporter = new SceneReporter(exList); 39 | reporter.ReportScenes(AssetsReporterUtils.ResultDir + "report_scene.js"); 40 | } 41 | public static void OpenReport() 42 | { 43 | AssetsReporterUtils.OpenURL(Path.Combine("AssetsReporter", "report_scene.html")); 44 | } 45 | 46 | public void ReportScenes(string reportPath) 47 | { 48 | try 49 | { 50 | var sb = new StringBuilder(1024 * 1024); 51 | sb.Append("g_scene_report = ["); 52 | var scenePathList = GetAllScenePath(); 53 | 54 | bool isFirst = true; 55 | foreach (var scenePath in scenePathList) 56 | { 57 | if (isFirst) { isFirst = false; } 58 | else { sb.Append(","); } 59 | ReportSceneAtPath(sb, scenePath); 60 | } 61 | 62 | sb.Append("];"); 63 | File.WriteAllText(reportPath, sb.ToString()); 64 | AssetsReporterUtils.AddCurrenTimeVar(sb); 65 | } 66 | catch (Exception e) 67 | { 68 | Debug.LogError(e); 69 | } 70 | } 71 | private void ReportSceneAtPath(StringBuilder sb, string scenePath) 72 | { 73 | var scene = EditorSceneManager.OpenScene(scenePath); 74 | sb.Append("{"); 75 | AssetsReporterUtils.AddJsonObject(sb, "buildIndex", scene.buildIndex).Append(",\n"); 76 | AssetsReporterUtils.AddJsonObject(sb, "path", scenePath).Append(",\n"); 77 | AssetsReporterUtils.AddJsonObject(sb, "sceneName", scene.name).Append(",\n"); 78 | AssetsReporterUtils.AddJsonObject(sb, "rootCount", scene.rootCount).Append(",\n"); 79 | 80 | ReportSceneDependAssets(sb, scenePath); 81 | sb.Append(","); 82 | 83 | var rootObjects = scene.GetRootGameObjects(); 84 | 85 | int allGameObjectCount = 0; 86 | int allComponentCount = 0; 87 | int allMonoBehaviourCount = 0; 88 | var componentsCountDictionary = new Dictionary(1024); 89 | foreach (var rootObj in rootObjects) 90 | { 91 | allGameObjectCount += CountChildTransform(rootObj.transform); 92 | var childComponents = rootObj.GetComponentsInChildren(); 93 | var childMonoBehaviour = rootObj.GetComponentsInChildren(); 94 | if (childComponents != null) { allComponentCount += childComponents.Length; } 95 | if (childMonoBehaviour != null) { allMonoBehaviourCount += childMonoBehaviour.Length; } 96 | AddToConpoenentCountDictionary(componentsCountDictionary, childComponents); 97 | } 98 | AssetsReporterUtils.AddJsonObject(sb, "allGameObjects", allGameObjectCount).Append(","); 99 | AssetsReporterUtils.AddJsonObject(sb, "allComponents", allComponentCount).Append(","); 100 | AssetsReporterUtils.AddJsonObject(sb, "allMonoBehaviour", allMonoBehaviourCount).Append(","); 101 | AssetsReporterUtils.AddJsonToContDictionary(sb, "componentCount", componentsCountDictionary); 102 | sb.Append("}"); 103 | } 104 | 105 | private static void AddToConpoenentCountDictionary(Dictionary cntDict, Component[] components) 106 | { 107 | if (components == null) 108 | { 109 | return; 110 | } 111 | foreach (var component in components) 112 | { 113 | if (component != null) 114 | { 115 | AssetsReporterUtils.AddCountDictionary(cntDict, component.GetType().ToString()); 116 | } 117 | } 118 | } 119 | 120 | private int CountChildTransform(Transform trans) 121 | { 122 | if (trans.childCount <= 0) 123 | { 124 | return 1; 125 | } 126 | int num = 1; 127 | foreach (Transform child in trans) 128 | { 129 | num += CountChildTransform(child); 130 | } 131 | return num; 132 | } 133 | 134 | private StringBuilder ReportSceneDependAssets(StringBuilder sb, string scenePath) 135 | { 136 | var depends = AssetDatabase.GetDependencies(scenePath, true); 137 | sb.Append("depends:["); 138 | if (depends != null) 139 | { 140 | bool firstFlag = true; 141 | foreach (var depend in depends) 142 | { 143 | if (depend == null) { continue; } 144 | if (firstFlag) { firstFlag = false; } 145 | else { sb.Append(','); } 146 | var importer = AssetImporter.GetAtPath(depend); 147 | var obj = AssetDatabase.LoadAssetAtPath(importer.assetPath); 148 | sb.Append("{"); 149 | AssetsReporterUtils.AddJsonObject(sb, "path", depend).Append(","); 150 | AssetsReporterUtils.AddJsonObject(sb, "importer", importer.GetType().ToString()); 151 | 152 | if (obj != null) 153 | { 154 | sb.Append(","); 155 | AssetsReporterUtils.AddJsonObject(sb, "type", obj.GetType().ToString()); 156 | } 157 | else 158 | { 159 | Debug.Log("loaderror " + depend + "::" + importer.name); 160 | } 161 | obj = null; 162 | sb.Append("}\n"); 163 | } 164 | } 165 | Resources.UnloadUnusedAssets(); 166 | sb.Append("]\n"); 167 | return sb; 168 | } 169 | 170 | 171 | } 172 | } -------------------------------------------------------------------------------- /Editor/Inner/SceneReporter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77bfabb7639b2294eb7d7a4d03dd5c14 3 | timeCreated: 1495464696 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/Inner/TextureReporter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System.Collections; 4 | using System.IO; 5 | using System.Collections.Generic; 6 | using System.Text; 7 | using System.Text.RegularExpressions; 8 | 9 | namespace UTJ.AssetsReporter 10 | { 11 | 12 | public class TextureReporter 13 | { 14 | 15 | 16 | private List excludeList = new List(); 17 | 18 | private Dictionary textureTypeSet = new Dictionary(); 19 | private Dictionary textureFormatSet = new Dictionary(); 20 | private Dictionary spriteTagSet = new Dictionary(); 21 | 22 | private string platform; 23 | /// 24 | /// Create Window 25 | /// 26 | public static void CreateReport(string pl, List exList) 27 | { 28 | var reporter = new TextureReporter(pl, exList); 29 | reporter.ReportTexture(AssetsReporterUtils.ResultDir + "report_texture.js"); 30 | } 31 | public static void OpenReport() 32 | { 33 | AssetsReporterUtils.OpenURL(Path.Combine("AssetsReporter", "report_texture.html")); 34 | } 35 | 36 | public TextureReporter(string pl, List exList) 37 | { 38 | if (pl == "default") { pl = ""; } 39 | 40 | this.platform = pl; 41 | this.excludeList = exList; 42 | } 43 | 44 | public void ReportTexture(string reportPath) 45 | { 46 | try 47 | { 48 | AssetsReporterUtils.CreatePreviewDir(); 49 | 50 | this.textureTypeSet = new Dictionary(); 51 | this.textureFormatSet = new Dictionary(); 52 | this.spriteTagSet = new Dictionary(); 53 | var guids = AssetDatabase.FindAssets("t:texture2D", null); 54 | var sb = new StringBuilder(1024 * 1024); 55 | int idx = 0; 56 | bool isFirst = true; 57 | AssetsReporterUtils.AddCurrenTimeVar(sb); 58 | sb.Append("g_texture_report = ["); 59 | foreach (var guid in guids) 60 | { 61 | string path = AssetDatabase.GUIDToAssetPath(guid); 62 | var textureImporter = AssetImporter.GetAtPath(path) as TextureImporter; 63 | if (textureImporter == null || AssetsReporterUtils.IsPathMatch(path, excludeList)) 64 | { 65 | continue; 66 | } 67 | if (isFirst) 68 | { 69 | isFirst = false; 70 | } 71 | else 72 | { 73 | sb.Append(","); 74 | } 75 | ReportTexture(sb, textureImporter); 76 | 77 | sb.Append("\n"); 78 | EditorUtility.DisplayProgressBar("Progress", path, (float)idx / (float)guids.Length); 79 | ++idx; 80 | } 81 | sb.Append("];"); 82 | AssetsReporterUtils.AddCountVarObject(sb, "g_texture_format_list", textureFormatSet); 83 | AssetsReporterUtils.AddCountVarObject(sb, "g_texture_type_list", textureTypeSet); 84 | AssetsReporterUtils.AddCountVarObject(sb, "g_texture_spriteTag_list", spriteTagSet); 85 | AssetsReporterUtils.AddPlatformVar(sb, this.platform); 86 | File.WriteAllText(reportPath, sb.ToString()); 87 | } 88 | finally 89 | { 90 | EditorUtility.ClearProgressBar(); 91 | } 92 | } 93 | 94 | private void ReportTexture(StringBuilder sb, TextureImporter importer) 95 | { 96 | int w, h; 97 | var type = importer.textureType; 98 | int maxSize = importer.maxTextureSize; 99 | #if UNITY_5_5_OR_NEWER 100 | var defaultTextureSetting = importer.GetDefaultPlatformTextureSettings(); 101 | var format = defaultTextureSetting.format; 102 | if (!importer.GetPlatformTextureSettings(this.platform, out maxSize, out format)) 103 | { 104 | maxSize = importer.maxTextureSize; 105 | format = defaultTextureSetting.format; 106 | } 107 | #else 108 | var format = importer.textureFormat; 109 | if (!importer.GetPlatformTextureSettings(this.platform, out maxSize, out format)) 110 | { 111 | maxSize = importer.maxTextureSize; 112 | format = importer.textureFormat; 113 | } 114 | #endif 115 | 116 | var tex = GetTextureSize(importer, out w, out h) as Texture2D; 117 | sb.Append("{"); 118 | if (tex != null) 119 | { 120 | if (!AssetsReporterUtils.IsVisibleInWebBrowserImage(importer.assetPath)) 121 | { 122 | string preview = AssetsReporterUtils.GetWebVisibleTexturePreview(importer, tex, true); 123 | AssetsReporterUtils.AddJsonObject(sb, "preview", preview).Append(","); 124 | } 125 | } 126 | 127 | AssetsReporterUtils.AddJsonObject(sb, "path", importer.assetPath.ToString()).Append(","); 128 | AssetsReporterUtils.AddJsonObject(sb, "textureType", type.ToString()).Append(","); 129 | AssetsReporterUtils.AddJsonObject(sb, "isReadable", importer.isReadable).Append(","); 130 | AssetsReporterUtils.AddJsonObject(sb, "wrapMode", importer.wrapMode.ToString()).Append(","); 131 | AssetsReporterUtils.AddJsonObject(sb, "mipmapEnabled", importer.mipmapEnabled).Append(","); 132 | AssetsReporterUtils.AddJsonObject(sb, "width", w).Append(","); 133 | AssetsReporterUtils.AddJsonObject(sb, "height", h).Append(","); 134 | AssetsReporterUtils.AddJsonObject(sb, "maxSize", maxSize).Append(","); 135 | AssetsReporterUtils.AddJsonObject(sb, "textureFormat", format.ToString()).Append(","); 136 | if (string.IsNullOrEmpty(importer.spritePackingTag)) 137 | { 138 | AssetsReporterUtils.AddJsonObject(sb, "isPow2", IsPow2Size(w, h)).Append(","); 139 | } 140 | else 141 | { 142 | AssetsReporterUtils.AddJsonObject(sb, "isPow2", true).Append(","); 143 | } 144 | AssetsReporterUtils.AddJsonObject(sb, "spritePackingTag", importer.spritePackingTag); 145 | sb.Append("}"); 146 | if (tex != null) 147 | { 148 | Resources.UnloadAsset(tex); 149 | tex = null; 150 | } 151 | 152 | AssetsReporterUtils.AddCountDictionary(this.spriteTagSet, importer.spritePackingTag); 153 | AssetsReporterUtils.AddCountDictionary(this.textureFormatSet, format); 154 | AssetsReporterUtils.AddCountDictionary(this.textureTypeSet, type); 155 | } 156 | private bool IsPow2Size(int width, int height) 157 | { 158 | bool wFlag = false; 159 | bool hFlag = false; 160 | for (int i = 0; i < 31; ++i) 161 | { 162 | int tmp = (1 << i); 163 | wFlag |= (tmp == width); 164 | hFlag |= (tmp == height); 165 | if (tmp >= width && tmp >= height) 166 | { 167 | break; 168 | } 169 | } 170 | return (wFlag & hFlag); 171 | } 172 | 173 | private Texture GetTextureSize(TextureImporter import, out int w, out int h) 174 | { 175 | w = h = 0; 176 | var tex = AssetDatabase.LoadAssetAtPath(import.assetPath); 177 | if (tex != null) 178 | { 179 | w = tex.width; 180 | h = tex.height; 181 | } 182 | return tex; 183 | } 184 | 185 | 186 | #region PNG_DATA 187 | /// 188 | /// png判定用のヘッダー 189 | /// 190 | private static readonly byte[] PngHeaderData = new byte[] { (byte)0x89, (byte)0x50, (byte)0x4E, (byte)0x47, (byte)0x0D, (byte)0x0A, (byte)0x1A, (byte)0x0A }; 191 | 192 | /// 193 | /// pngかどうかを判定します 194 | /// 195 | /// 196 | /// 197 | private static bool IsPngData(byte[] data) 198 | { 199 | if (data == null || data.Length < PngHeaderData.Length) 200 | { 201 | return false; 202 | } 203 | int length = PngHeaderData.Length; 204 | for (int i = 0; i < length; ++i) 205 | { 206 | if (data[i] != PngHeaderData[i]) 207 | { 208 | return false; 209 | } 210 | } 211 | return true; 212 | } 213 | 214 | /// 215 | /// Pngのサイズをヘッダーから取得します 216 | /// 217 | /// PNGのデータ 218 | /// 幅を書き込みます 219 | /// 高さを書き込みます 220 | private static void GetPngSize(byte[] data, out int width, out int height) 221 | { 222 | width = 0; 223 | height = 0; 224 | if (data == null || data.Length < 33) 225 | { 226 | return; 227 | } 228 | int idx = 16; 229 | width = (data[idx + 0] << 24) + 230 | (data[idx + 1] << 16) + 231 | (data[idx + 2] << 8) + 232 | (data[idx + 3] << 0); 233 | idx = 20; 234 | height = (data[idx + 0] << 24) + 235 | (data[idx + 1] << 16) + 236 | (data[idx + 2] << 8) + 237 | (data[idx + 3] << 0); 238 | } 239 | #endregion PNG_DATA 240 | } 241 | 242 | } -------------------------------------------------------------------------------- /Editor/Inner/TextureReporter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 605a5eaf4a47ddd48ad4beb967a02da9 3 | timeCreated: 1460427490 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Yusuke Kurokawa 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.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90a4bd0a922d2a24da9de7f4c8ad995d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.ja.md: -------------------------------------------------------------------------------- 1 | # AssetsReporter 2 | Read this in other languages: [English](README.md), 日本語
3 | 4 | # 注意 5 | 現在 Internet Explorerer系のブラウザでの閲覧が出来なくなってしまっております 6 | Chromeブラウザをお使いいただければと思います 7 | 8 | [Unity] Import設定などをブラウザ上で閲覧/検索できるようにするツールです
9 |
10 | 目的:不適切なImport設定になっているテクスチャ/サウンド/モデルデータ等を見つけるためのツールです。
11 | このツールはUnityプロジェクト内(Assets以下)に含むEditor拡張と、プロジェクト内に含めないHTML部分の二個で成り立っています
12 | 本プロジェクトを丸ごとコピーして利用して下さい。 13 | 14 | # デモ 15 | [`https://wotakuro.github.io/AssetsReporter/`](https://wotakuro.github.io/AssetsReporter/)
16 | AssetsReportの結果がこのような感じで閲覧可能です。
17 | ※デモは英語版ですが、本ブランチから落とせば日本語表記です!! 18 | 19 | 20 | # 使い方 21 | ![alt text](Documentation~/image/ja/reporterWindow.png) 22 |
23 | メニューの「Tools/UTJ/AssetsReporter」を押すことで上記Windowが開きます。
24 | 
25 | Texture/Model/Audio等の項目別に呼び出して使います。
26 | 「Report」ボタンを押すとプロジェクト内を解析し、ブラウザで表示することが出来ます。
27 | 
28 | それぞれについては以下にて。
29 | 
30 | 
31 | 32 | 33 | # TextureReporter 34 | ![alt text](Documentation~/image/ja/textureReporter.png) 35 |
36 | プロジェクト内のTextureの設定をレポートします。
37 | 圧縮フォーマットは適切かなどの確認等に使えればと思います。
38 | 
39 | 40 | # ModelReporter 41 | ![alt text](Documentation~/image/ja/modelReporter.png) 42 |
43 | プロジェクト内のModelの設定をレポートします。
44 | Rigの設定はどうなっているか、Mesh最適化等はちゃんとしているか等々確認できます
45 | 
46 | 47 | # AudioReporter 48 | ![alt text](Documentation~/image/ja/audioReporter.png) 49 |
50 | プロジェクト内のAudioの設定をレポートします。
51 | 圧縮フォーマット等の確認にお使いください
52 | 
53 | 54 | # AssetBundleReporter 55 | ![alt text](Documentation~/image/ja/ResourcesReporter.png) 56 |
57 | 作成予定のAssetBundleを閲覧可能な形にします
58 | 
59 | 60 | # SceneReporter 61 | ![alt text](Documentation~/image/ja/sceneReporter.png) 62 |
63 | シーンの状況を閲覧できます
64 | 
65 | 66 | 67 | # ResourcesReporter 68 | ![alt text](Documentation~/image/ja/ReporterAb.png) 69 |
70 | プロジェクト中にある「Resources」ディレクトリを一覧にします。
71 | Resourcesフォルダはあるだけでメモリを消費するので可能な限り消しましょう。
72 | 
73 | 74 | #ignoreについて 75 |
76 | 以下の二つを追加すると良いでしょう…
77 | 「/AssetsReporter/AssetsReporter/result/*.js」
78 | 「/AssetsReporter/AssetsReporter/result/preview/」
79 | 
80 | 81 | 82 | 83 | # その他 84 | こちらではjQueryを利用しています 85 | https://jquery.com/ 86 | -------------------------------------------------------------------------------- /README.ja.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb259c9c1eddb454290e0a11f98b7658 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AssetsReporter 2 | 3 | Read this in other languages: English, [日本語](README.ja.md)
4 | 5 | [Unity] You can detect strange import settings on web browser.
6 |
7 | Purpose of this: This software was developed for detect strange "Import settings"(for texture/audio/model).
8 | Copy this to your project. 9 | (Not only Assets directory, but also AssetsReport directory.) 10 | 11 | 12 |
To customize this.
13 | If you wanted to customize this, you'd better to watch wiki.
14 | I wrote a document "how this system works".
15 | 
16 | 17 | # Demo 18 | [`https://wotakuro.github.io/AssetsReporter/`](https://wotakuro.github.io/AssetsReporter/)
19 | You can watch result of AssetsReport. 20 | 21 | 22 | # How to use 23 | ![alt text](Documentation~/image/menu.png) 24 |
25 | Click "Tools/UTJ/AssetsReporter" to open window.
26 | 
27 | 28 | ![alt text](Documentation~/image/reporterWindow.png) 29 |
30 | This reports independentae of each part( "Texture/Model/Audio").
31 | Push "Report" button to analyze project, then open web browser.
32 | 
33 | 34 | 35 | # TextureReporter 36 | ![alt text](Documentation~/image/textureReporter.png) 37 |
38 | This reports Import settings of Textures.
39 | You can use this like these cases.
40 |  - Is compression format suitable?
41 |  - Are there any textures which size isn't power of two.
42 | 
43 | 44 | # ModelReporter 45 | ![alt text](Documentation~/image/modelReporter.png) 46 |
47 | This reports Import settings of Models.
48 | You can use this like these cases.
49 |  - Is optimize mesh ?
50 |  - Is Rig suitable?
51 |  - Are there any models which is checked "Read/Write".
52 | 
53 | 54 | # AudioReporter 55 | ![alt text](Documentation~/image/audioReporter.png) 56 |
57 | This reports Import settings of AudioClips.
58 | You can use this like these cases.
59 |  - Is compress format suitable?
60 | 
61 | 62 | # AssetBundleReporter 63 | ![alt text](Documentation~/image/ReporterAb.png) 64 |
65 | You'll be able to watch assetbundle data on web browser.
66 | 
67 | 68 | # SceneReporter 69 | ![alt text](Documentation~/image/SceneReporter.png) 70 |
71 | You can see the summary of each scenes.
72 | 
73 | 74 | # ResourcesReporter 75 | ![alt text](Documentation~/image/ResourcesReporter.png) 76 |
77 | It waste runtime-memory to put "Resources" directory in your project.
78 | You should better to replace "Resources" directory to assetbundle.
79 | This helps you to find "Resources" directory and assets in the directory.
80 | 
81 | 82 | #about ignore 83 |
84 | report results are in below.
85 |  "/AssetsReporter/AssetsReporter/result/*.js"
86 |  "/AssetsReporter/AssetsReporter/result/preview/"
87 | you'd better to add ignore list.
88 | 
89 | 90 | 91 | ## TODO 92 | refactoring
93 | 94 | # Other 95 | This software is depends on jquery. 96 | https://jquery.com/ 97 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf919a0933d26c84686d0d4744f768bf 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e44f381573b586047846ce9d0650a2a7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/css.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0eecee93436eaf46b38801194a8fbdc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/css/report.css: -------------------------------------------------------------------------------- 1 | body{ 2 | margin:0px; 3 | } 4 | .content-main{ 5 | margin: 10px 10px 10px 10px; 6 | } 7 | 8 | table{ 9 | border-collapse: collapse; 10 | } 11 | 12 | th{ 13 | border-spacing: 0px; 14 | border: 1px solid #ccc; 15 | background-color: #eeffff; 16 | } 17 | td{ 18 | border-spacing: 0px; 19 | border: 1px solid #ccc; 20 | padding-left : 2px; 21 | padding-right : 2px; 22 | } 23 | 24 | h1{ 25 | display:inline-block; 26 | } 27 | .content-head{ 28 | background-color: #212388; 29 | margin: 0px; 30 | color: #ffffff; 31 | text-align: center; 32 | } 33 | 34 | h2{ 35 | background-color: #aaffff; 36 | color: #000000; 37 | border-left: 0; 38 | padding: 10px 10px; 39 | margin: 1px 1px; 40 | } 41 | 42 | h3{ 43 | background-color: #4388AA; 44 | color: #ffffff; 45 | border-left: 0; 46 | padding: 10px 1px; 47 | margin: 2px 1px; 48 | } 49 | h4{ 50 | background-color: #43779D; 51 | color: #ffffff; 52 | border-left: 0; 53 | padding: 5px 5px; 54 | margin: 2px 1px; 55 | } 56 | 57 | h5{ 58 | background-color: #23577D; 59 | color: #ffffff; 60 | border-left: 0; 61 | padding: 5px 5px; 62 | margin:5px 0px; 63 | } 64 | 65 | h6{ 66 | font-size:12pt; 67 | padding:3px 10px 1px 10px; 68 | border-left:6px solid #4388AA; 69 | border-top:2px solid #4388AA; 70 | border-bottom:2px solid #4388AA; 71 | margin:-2px 3px 0px 0px; 72 | } 73 | 74 | .model-body{ 75 | margin-left: 20px; 76 | } 77 | 78 | .image-texture{ 79 | margin-left : 20px; 80 | border: 3px solid #cccccc; 81 | max-width: 800px; 82 | } 83 | .image-explain{ 84 | padding-top : 5px; 85 | padding-left : 20px; 86 | } 87 | 88 | .selectable:hover{ 89 | cursor: pointer; 90 | } 91 | .ab-image-texture{ 92 | margin-left : 20px; 93 | border: 3px solid #cccccc; 94 | max-width: 200px; 95 | } 96 | 97 | .ab-file-explain{ 98 | margin-left:10px; 99 | margin-bottom:10px; 100 | } 101 | 102 | 103 | .box { 104 | display: inline-block; 105 | } 106 | .search-btn{ 107 | font-size: 1.4em; 108 | padding: 10px 30px; 109 | -moz-border-radius: 5px; 110 | -webkit-border-radius: 5px; 111 | border-radius: 5px; 112 | margin-bottom:10px; 113 | } 114 | .try-listen{ 115 | padding-bottom:8px; 116 | } 117 | .report-info{ 118 | float: right; 119 | text-align:right; 120 | color:#ffffff; 121 | padding-top:30px; 122 | padding-right:15px; 123 | } 124 | .return-to-top-header{ 125 | float: left; 126 | text-align:left; 127 | color:#ffffff; 128 | padding-top:10px; 129 | padding-left:15px; 130 | } 131 | 132 | 133 | audio{ 134 | padding-bottom:5px; 135 | } 136 | 137 | .ab-body{ 138 | margin-left: 20px; 139 | } 140 | 141 | .resources-block{ 142 | margin-left:20px; 143 | } 144 | .resources-depends-block{ 145 | margin-left:20px; 146 | } 147 | 148 | 149 | .scene-file-title{ 150 | margin-left:20px; 151 | } 152 | .scene-file-block{ 153 | margin-left:40px; 154 | } 155 | -------------------------------------------------------------------------------- /ReporterResource/css/report.css.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed95b3dd551859b479ebc687e189b2d3 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/excludeList.txt: -------------------------------------------------------------------------------- 1 | Assets/Store/.* 2 | -------------------------------------------------------------------------------- /ReporterResource/excludeList.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cefded864b145564aadedf1b1e1d572b 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Assets Reporter 5 | 6 | 7 | 8 | 9 | 16 | 17 | 18 |
19 |
20 |

AssetsReporter

21 |
22 |
23 |
24 |
25 | 26 |

27 |
28 |

29 | 30 |

31 |
32 |

33 | 34 | 35 |

36 |
37 |

38 | 39 | 40 |

AssetBundle Report

41 |
42 |

43 | 44 | 45 |

AssetBundle Duplicate Report

46 |
47 |

48 | 49 | 50 |

Resources Report

51 |
52 |

53 | 54 | 55 |

Scene Report

56 |
57 |

58 | 59 | 60 | 61 |

Tips

62 |
63 |

64 |
65 | 66 | -------------------------------------------------------------------------------- /ReporterResource/index.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e562c2773cc150418f9870ab619638f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b8763ff8a9232743a85aba352070b7a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/js/reporter.js: -------------------------------------------------------------------------------- 1 | 2 | function getCheckCondition( data , headerStr){ 3 | var res = {}; 4 | length = data.length; 5 | for( i = 0 ; i < length ; ++ i ){ 6 | var t = data[i].val; 7 | try{ 8 | res[ t ] = $("#" + headerStr + convertCheckBoxValue(t) ).prop('checked'); 9 | }catch( e ){ window.alert( e ); } 10 | } 11 | return res; 12 | } 13 | 14 | function convertCheckBoxValue( val ){ 15 | return val.replace(/ /g,'_').replace(/\./g,'_').replace(/\//g,'_').replace(/\(/g,'_').replace(/\)/g,'_'); 16 | } 17 | 18 | function setupCheckBox( data,thStr ,headStr,writeTo ){ 19 | var tplData = GetCurrentTemplateData(); 20 | 21 | var length = data.length; 22 | var i = 0; 23 | var html = ""; 24 | if( tplData == null ){ 25 | html += "'; 26 | }else{ 27 | html += ''; 28 | } 29 | for( i = 0; i < length ; ++ i ){ 30 | html += ''; 31 | html += ''; 32 | html += ''; 33 | html += ''; 34 | html += ''; 35 | } 36 | html += "
" + thStr + '
' + thStr + '' + tplData.tplCheck + '' + tplData.tplHitNum + '
'+ data[i].val + '' + ''+ ''+ data[i].cnt + '
"; 37 | $(writeTo).html(html); 38 | } 39 | 40 | function getConditionList( idstr ){ 41 | var list = $("#" +idstr + " input.cond_value"); 42 | var idx = 0; 43 | var ret = []; 44 | list.each( function(){ 45 | var tmp = $(this).val(); 46 | if( tmp ){ 47 | ret[idx] = tmp; ++ idx; 48 | } 49 | } ); 50 | 51 | return ret; 52 | } 53 | 54 | function isIncludeFileName( path , cond_list ){ 55 | if( !cond_list || cond_list.length == 0 ){ return true; } 56 | var length = cond_list.length; 57 | for( var i = 0; i < length; ++ i ){ 58 | if( path.indexOf(cond_list[i] ) >= 0 ){ 59 | return true; 60 | } 61 | } 62 | return false; 63 | } 64 | 65 | function isExcludeFileName( path , cond_list ){ 66 | if( !cond_list || cond_list.length == 0 ){ return false; } 67 | var length = cond_list.length; 68 | for( var i = 0; i < length; ++ i ){ 69 | if( path.indexOf(cond_list[i] ) >= 0 ){ 70 | return true; 71 | } 72 | } 73 | return false; 74 | } 75 | 76 | 77 | function getWarningSummaryData( data , check ){ 78 | var data_length = data.length; 79 | var check_length = check.length; 80 | var check_result = {}; 81 | 82 | for( var i = 0 ; i < data_length ; ++ i ){ 83 | for( var j = 0 ; j < check_length ; ++ j ){ 84 | if( check[j].check_func(data[i]) ){ 85 | if(check_result[ check[j].message ] == undefined){ 86 | check_result[ check[j].message ] = 1; 87 | }else{ 88 | ++ check_result[ check[j].message ]; 89 | } 90 | } 91 | } 92 | } 93 | return check_result; 94 | } 95 | function writeToWarningField( result ){ 96 | // report 97 | if( result ){ 98 | var str = '

Warning

'; 99 | str += ''; 100 | str += ''; 101 | for( var idx in result ){ 102 | str += ''; 103 | } 104 | str += '
ItemHitNum
' + idx + "" + result[idx] + '
'; 105 | str += '
'; 106 | $("#warning_field").html(str); 107 | } 108 | } 109 | 110 | $(document).ready( function(){ 111 | try{ 112 | var date_str = "report : " + g_report_at; 113 | var platform_str = g_report_platform; 114 | if( !g_report_platform ){ 115 | platform_str = "platform : none"; 116 | }else{ 117 | platform_str = "platform : " + platform_str; 118 | } 119 | $("#report_at").html(date_str); 120 | $("#platform").html(platform_str); 121 | }catch(e){} 122 | }); 123 | 124 | $(document).on("click",".add_cond",function() { 125 | var tplData = GetCurrentTemplateData(); 126 | var btnValue = 'delete'; 127 | if( tplData ){ btnValue = tplData.tplDelConditionBtn ;} 128 | var str = '
'; 129 | $(this).before(str); 130 | }); 131 | $(document).on("click",".del_cond",function() { 132 | $(this).parent('div').remove(); 133 | }); 134 | 135 | 136 | function SetTemplateToHtml( dict ) 137 | { 138 | for( var idx in dict ){ 139 | $("." + idx ).text( dict[ idx] ); 140 | $("input." + idx ).val( dict[ idx] ); 141 | } 142 | } 143 | 144 | g_current_template_data = null; 145 | function GetCurrentTemplateData() 146 | { 147 | return g_current_template_data; 148 | } 149 | 150 | function LoadLanguageJavascript( lang , set ,completeCallback=null) 151 | { 152 | var idstr = "dynamic_js_" + lang +"_" + set; 153 | if( !document.getElementById( idstr ) ){ 154 | var script = document.createElement( 'script' ); 155 | script.type = 'text/javascript'; 156 | script.src = "template/" + lang + "/template_" + set + ".js"; 157 | script.setAttribute( "id" , idstr ); 158 | script.onload = function(){ 159 | g_current_template_data = eval( "g_" + lang + "_template_" + set ); 160 | SetTemplateToHtml( g_current_template_data ); 161 | if( completeCallback ){ 162 | completeCallback(); 163 | } 164 | }; 165 | document.head.appendChild( script ); 166 | }else{ 167 | g_current_template_data = eval( "g_" + lang + "_template_" + set ); 168 | SetTemplateToHtml( g_current_template_data ); 169 | } 170 | } 171 | 172 | 173 | function GetLanguageConfig(){ 174 | try{ 175 | if( !g_language ){g_language = "en";} 176 | return g_language; 177 | }catch(e){ return "en"; } 178 | } 179 | 180 | -------------------------------------------------------------------------------- /ReporterResource/js/reporter.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4240a3cbbbd4d5747a45998ade610fc7 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/js/warning_audio.js: -------------------------------------------------------------------------------- 1 | 2 | g_audio_warning_check = [ 3 | { 4 | message:"Too high sampling rate audio", 5 | check_func:function( data ){ 6 | return (data.sampleRateOverride > 44100); 7 | } 8 | } 9 | ]; 10 | 11 | 12 | $(document).ready( function(){ 13 | var result = getWarningSummaryData( g_audio_report , g_audio_warning_check ); 14 | writeToWarningField( result ); 15 | }); 16 | -------------------------------------------------------------------------------- /ReporterResource/js/warning_audio.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7839f187564225e43916e105c7c10400 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/js/warning_model.js: -------------------------------------------------------------------------------- 1 | g_model_warning_check = [ 2 | { 3 | message:"Read/Write enabled", 4 | check_func:function( data ){ 5 | return data.isReadable; 6 | } 7 | }, 8 | { 9 | message:"Optimize disable", 10 | check_func:function( data ){ 11 | return !data.optimizeMesh; 12 | } 13 | } 14 | ]; 15 | 16 | 17 | $(document).ready( function(){ 18 | var result = getWarningSummaryData( g_model_report , g_model_warning_check ); 19 | writeToWarningField( result ); 20 | }); 21 | -------------------------------------------------------------------------------- /ReporterResource/js/warning_model.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0b38bb796e1338f45b51592364a54379 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/js/warning_texture.js: -------------------------------------------------------------------------------- 1 | 2 | g_texture_warning_check = [ 3 | { 4 | message:"Read/Write enabled texture", 5 | check_func:function( data ){ 6 | return data.isReadable; 7 | } 8 | }, 9 | { 10 | message:"Not pow2 size texture", 11 | check_func:function( data ){ 12 | return !data.isPow2; 13 | } 14 | }, 15 | { 16 | message:"Too small size texture", 17 | check_func:function( data ){ 18 | return (data.width < 64 || data.height < 64 ); 19 | } 20 | } 21 | ]; 22 | 23 | 24 | $(document).ready( function(){ 25 | var result = getWarningSummaryData( g_texture_report , g_texture_warning_check ); 26 | writeToWarningField( result ); 27 | }); 28 | -------------------------------------------------------------------------------- /ReporterResource/js/warning_texture.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46bc859e28c08244296d9281ee6b389f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/report_ab.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | AssetBundle Report 5 | 6 | 7 | 8 | 9 | 10 | 236 | 237 | 238 |
239 |
240 | TOP 241 |
242 |

AssetBundle Report

243 |
244 |
245 |
246 |
247 |
248 |
249 |

250 |

251 |

252 |
253 | 254 |
255 |

256 |
257 | 258 |
259 |
260 |

261 |
262 | 263 |
264 |
265 | 266 |
267 |
268 |
269 | 270 |

271 |
272 |
273 |
274 | 275 | -------------------------------------------------------------------------------- /ReporterResource/report_ab.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 03b59ff2cf8ef4f4981ac3e2da0a75a7 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/report_audio.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | AudioClip Report 4 | 5 | 6 | 7 | 8 | 9 | 10 | 134 | 135 | 136 |
137 |
138 | TOP 139 |
140 |

AudioClip Report

141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |

149 |
150 |
151 |

152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 |
167 |
168 |
169 |

170 |
171 |
172 |
173 |

174 |
175 |
176 |
177 |

178 |
179 |
180 |
181 |
182 |

183 |
184 | 185 |
186 |

187 |
188 | 189 |
190 | 191 |

192 | 193 |

194 |
195 |
196 |
197 | 198 | -------------------------------------------------------------------------------- /ReporterResource/report_audio.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83b607d6e338e0c4c820fb7b1f3eb871 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/report_duplicate_ab.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | AssetBundle Duplicate Report 5 | 6 | 7 | 8 | 9 | 10 | 128 | 129 | 130 |
131 |
132 | TOP 133 |
134 |

AssetBundle Duplicate Report

135 |
136 |
137 |
138 |
139 |
140 |
141 | 142 |
143 |
144 |
145 |
146 | 147 | -------------------------------------------------------------------------------- /ReporterResource/report_duplicate_ab.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b59ac3d452b294b409f77c8b8e52c34d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/report_model.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Model Report 5 | 6 | 7 | 8 | 9 | 10 | 11 | 194 | 195 | 196 |
197 |
198 | TOP 199 |
200 |

Model Report

201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |

209 |
210 |
211 |

212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 |
227 |
228 |
229 |

230 |
231 |
232 | 233 |
234 |

235 |
236 |
237 |
238 |

239 |
240 |
241 |
242 |

243 |
244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 |
-
-
255 |
256 |
257 |
258 |

259 |
260 | 261 |
262 |

263 |
264 | 265 |
266 |

267 | 268 |

269 |
270 |
271 | 272 | 273 | -------------------------------------------------------------------------------- /ReporterResource/report_model.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f2a27a87a0e4bb47b51723fade976ac 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/report_resources.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Resources Report 5 | 6 | 7 | 8 | 9 | 10 | 168 | 169 | 170 |
171 |
172 | TOP 173 |
174 |

Resources Report

175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |

183 |
184 |
185 |

Type

186 |
187 |
188 |
189 |

Parent directories

190 |
191 |
192 |
193 |

194 | 195 |

196 |
197 |
198 | 199 | -------------------------------------------------------------------------------- /ReporterResource/report_resources.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6dab3a7b1906a5648b7aa6874ab5a0c8 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/report_scene.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | Scene Report 4 | 5 | 6 | 7 | 8 | 9 | 186 | 187 | 188 |
189 |
190 | TOP 191 |
192 |

Scene Report

193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 | 201 |

202 |
203 |
204 |

205 | 206 | 207 | 208 | 209 | 210 | 211 |
212 |
213 |
214 |
215 |
216 |

217 | 218 | 219 |

220 |
221 | 222 |
223 |

224 |
225 | 226 |
227 | 228 |

229 | 230 |

231 |
232 |
233 |
234 | 235 | -------------------------------------------------------------------------------- /ReporterResource/report_scene.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7745c804c2f0f98478bc3cac2299c739 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/report_texture.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Texture Report 5 | 6 | 7 | 8 | 9 | 10 | 11 | 155 | 156 | 157 |
158 |
159 | TOP 160 |
161 |

Texture Report

162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |

170 |
171 |
172 |

173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 |
188 |
189 |
190 |

191 |
192 |
193 |
194 |

195 |
196 |
197 |
198 |

199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 |
-
-
210 |
211 | 212 |
213 |

214 |
215 |
216 |
217 |
218 |

219 |
220 | 221 |
222 |

If filepath doesn't include below words

223 |
224 | 225 |
226 | 227 |

228 | 229 |

230 |
231 |
232 |
233 | 234 | -------------------------------------------------------------------------------- /ReporterResource/report_texture.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2527a89879e172a44b7f5f52d1cde0c0 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/result.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c1600d79f3990a4d95bbb0df22552d8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/result/result_data_is_here.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/ReporterResource/result/result_data_is_here.txt -------------------------------------------------------------------------------- /ReporterResource/result/result_data_is_here.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d04a9f7f19fc4d458fb488349093166 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 442420309fc03cd42a748abae1e9b167 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/template/en.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21b8670e16a9292419d5896f59d1fd00 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_ab.js: -------------------------------------------------------------------------------- 1 | g_en_template_ab = { 2 | // common 3 | tplNoPlatform : "none", 4 | tplWarning : "Warning", 5 | tplSearchFilter : "SearchFilter", 6 | tplSearchTitle : "Search", 7 | tplSearchBtn : "Search", 8 | tplSearchResultTitle : "Search Result", 9 | tplCheckNon : "No Check", 10 | tplCheckEnableOnly : "Enable Only", 11 | tplCheckDisableOnly : "Disable Only", 12 | tplHitNum : "HitNum", 13 | tplItem : "Item", 14 | tplCheck : "Check", 15 | tplCondition : "Condition", 16 | tplAddConditionBtn : "Add condition", 17 | tplDelConditionBtn : "delete", 18 | tplFileInclude : "If filepath includes below words", 19 | tplFileExclude : "If filepath doesn't include below words", 20 | 21 | // specific 22 | tplCondIncludeDepends : "Include / Depends file", 23 | tplCondIncludeFiles : "AssetBundle includes below files", 24 | tplCondDependsFiles : "AssetBundle depends on below files", 25 | 26 | tplCondAssetBundleName : "Asset BundleName", 27 | tplCondIncludeAbName : "If AssetBundle's name include below words", 28 | tplCondExcludeAbName : "If AssetBundle's name doesen't include below words ", 29 | 30 | // result 31 | tplResultFileList : "FileList", 32 | tplResultFileDependencies : "Dependencies", 33 | tplResultAbDependencies : "Dependencies", 34 | tplResultType : "Type", 35 | tplResultPath : "Path", 36 | tplResultBundleName : "bundle name", 37 | tplResultBundleValiant : "bundle valiant", 38 | tplResultNoDependencies : "No dependencies", 39 | tplResultListen : "Listen", 40 | 41 | tplResultDuplicateFiles : "DuplicateFiles", 42 | tplResultNoDuplicate : "There are no Duplicate Files " 43 | 44 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_ab.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9febd7ed3f55474f9461339affa6416 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_audio.js: -------------------------------------------------------------------------------- 1 | g_en_template_audio = { 2 | // common 3 | tplNoPlatform : "none", 4 | tplWarning : "Warning", 5 | tplSearchFilter : "SearchFilter", 6 | tplSearchTitle : "Search", 7 | tplSearchBtn : "Search", 8 | tplSearchResultTitle : "Search Result", 9 | tplCheckNon : "No Check", 10 | tplCheckEnableOnly : "Enable Only", 11 | tplCheckDisableOnly : "Disable Only", 12 | tplHitNum : "HitNum", 13 | tplItem : "Item", 14 | tplCheck : "Check", 15 | tplCondition : "Condition", 16 | tplAddConditionBtn : "Add condition", 17 | tplDelConditionBtn : "delete", 18 | tplFileInclude : "If filepath includes below words", 19 | tplFileExclude : "If filepath doesn't include below words", 20 | 21 | // specific 22 | tplCondBasic : "Basic", 23 | tplCondLoadType : "LoadType", 24 | tplCondFormat : "Format", 25 | tplCondSamplingRate : "Hz(Sampling Rate)", 26 | 27 | tplCondForceToMono : "Force To Mono", 28 | tplCondLoadBackGround : "Load In BackGround", 29 | tplCondPreload : "Preload AudioData", 30 | 31 | // in result 32 | tplResultListen : "Listen", 33 | tplResultPath : "Path", 34 | tplResultForceToMono : "Force To Mono", 35 | tplResultLoadBackGround : "Load in Background", 36 | tplResultPreload : "Preload Audio Data", 37 | tplResultLoadType : "LoadType", 38 | tplResultFormat : "Format", 39 | tplResultSampleSetting : "SampleRateSetting", 40 | tplResultSampleOverride : "SampleRateOverride" 41 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_audio.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9807e5eabb5a44b45920fe899c044946 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_index.js: -------------------------------------------------------------------------------- 1 | g_en_template_index = { 2 | tplTextureTitle : "Texture Report" , 3 | tplTextureExplain : "Check Texture Import Settings" , 4 | tplAudioTitle : "Audio Report" , 5 | tplAudioExplain : "Check AudioClip Import Settings" , 6 | tplModelTitle : "Model Report" , 7 | tplModelExplain : "Check Model Import Settings" , 8 | tplAbTitle : "AssetBundle Report" , 9 | tplAbExplain : "Check AssetBundle Import Settings" , 10 | tplAbDupTitle : "AssetBundle Duplicate Report" , 11 | tplAbDupExplain : "Check Duplicated Assets in AssetBundle(you can also see the result in AssetBundle Report. This is summirized page.)" , 12 | tplResourceTitle : "Resources Report" , 13 | tplResourceExplain : "Check \"Resources\" directory in the project." , 14 | tplTipsTitle : "Tips" , 15 | tplTipsExplain : "Tips for Import Settings" , 16 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_index.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ec27d320c0bbc84a9df31a5421a4e9f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_model.js: -------------------------------------------------------------------------------- 1 | g_en_template_model = { 2 | // common 3 | tplNoPlatform : "none", 4 | tplWarning : "Warning", 5 | tplSearchFilter : "SearchFilter", 6 | tplSearchTitle : "Search", 7 | tplSearchBtn : "Search", 8 | tplSearchResultTitle : "Search Result", 9 | tplCheckNon : "No Check", 10 | tplCheckEnableOnly : "Enable Only", 11 | tplCheckDisableOnly : "Disable Only", 12 | tplHitNum : "HitNum", 13 | tplItem : "Item", 14 | tplCheck : "Check", 15 | tplCondition : "Condition", 16 | tplAddConditionBtn : "Add condition", 17 | tplDelConditionBtn : "delete", 18 | tplFileInclude : "If filepath includes below words", 19 | tplFileExclude : "If filepath doesn't include below words", 20 | 21 | // specific 22 | tplCondBasic : "Basic", 23 | tplCondScaleFactor : "ScaleFactor", 24 | tplCondRig : "Rig", 25 | tplCondSourceAvatar : "SourceAvatar", 26 | tplCondVertObjNum : "number of vertex/object", 27 | 28 | tplCheckAnimation : "Animation Check", 29 | tplCheckReadWrite : "Read/Write Check", 30 | tplCheckOptimizeMesh : "OptimizeMesh Check", 31 | tplIncludeOnly : "IncludeOnly", 32 | tplNoIncludeOnly : "No Include Only", 33 | tplCondVertex : "Vertex", 34 | tplCondObject : "Object", 35 | 36 | // in result 37 | tplResultPath : "Path", 38 | tplResultObjectNum : "Object Num ", 39 | tplVertexNum : "VertexNum", 40 | tplResultScaleFactor : "Scale Factor", 41 | tplResultReadWrite : "Read/Write", 42 | tplResultOptimizeMesh : "OptimizeMesh", 43 | tplResultImportMaterial : "ImportMaterial", 44 | tplResultImportMaterialMode : "ImportMaterialMode", 45 | tplResultGenCollider : "Generate Collider", 46 | 47 | tplResultRigType : "Type", 48 | tplResultRigGeneration : "Generation", 49 | tplResultRigSrcAvatar : "SourceAvatar", 50 | 51 | tplResultAnimBasic : "Basic", 52 | tplResultAnimCompress : "animationCompression", 53 | tplResultAnimList : "Animation list", 54 | 55 | tplResultInfoPreview : "Preview", 56 | tplResultInfoModel : "Information about Model", 57 | tplResultInfoRig : "Information about Rig", 58 | tplResultInfoAnim : "Information about Animation", 59 | 60 | 61 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_model.js.1~: -------------------------------------------------------------------------------- 1 | g_en_template_model = { 2 | // common 3 | tplNoPlatform : "none", 4 | tplWarning : "Warning", 5 | tplSearchFilter : "SearchFilter", 6 | tplSearchTitle : "Search", 7 | tplSearchBtn : "Search", 8 | tplSearchResultTitle : "Search Result", 9 | tplCheckNon : "No Check", 10 | tplCheckEnableOnly : "Enable Only", 11 | tplCheckDisableOnly : "Disable Only", 12 | tplHitNum : "HitNum", 13 | tplItem : "Item", 14 | tplCheck : "Check", 15 | tplCondition : "Condition", 16 | tplAddConditionBtn : "Add condition", 17 | tplDelConditionBtn : "delete", 18 | tplFileInclude : "If filepath includes below words", 19 | tplFileExclude : "If filepath doesn't include below words", 20 | 21 | // specific 22 | tplCondBasic : "Basic", 23 | tplCondScaleFactor : "ScaleFactor", 24 | tplCondRig : "Rig", 25 | tplCondSourceAvatar : "SourceAvatar", 26 | tplCondVertObjNum : "number of vertex/object", 27 | 28 | tplCheckAnimation : "Animation Check", 29 | tplCheckReadWrite : "Read/Write Check", 30 | tplCheckOptimizeMesh : "OptimizeMesh Check", 31 | tplIncludeOnly : "IncludeOnly", 32 | tplNoIncludeOnly : "No Include Only", 33 | tplCondVertex : "Vertex", 34 | tplCondObject : "Object", 35 | 36 | // in result 37 | tplResultPath : "Path", 38 | tplResultObjectNum : "Object Num ", 39 | tplVertexNum : "VertexNum", 40 | tplResultScaleFactor : "Scale Factor", 41 | tplResultReadWrite : "Read/Write", 42 | tplResultOptimizeMesh : "OptimizeMesh", 43 | tplResultImportMaterial : "ImportMaterial", 44 | tplResultGenCollider : "Generate Collider", 45 | 46 | tplResultRigType : "Type", 47 | tplResultRigGeneration : "Generation", 48 | tplResultRigSrcAvatar : "SourceAvatar", 49 | 50 | tplResultAnimBasic : "Basic", 51 | tplResultAnimCompress : "animationCompression", 52 | tplResultAnimList : "Animation list", 53 | 54 | tplResultInfoPreview : "Preview", 55 | tplResultInfoModel : "Information about Model", 56 | tplResultInfoRig : "Information about Rig", 57 | tplResultInfoAnim : "Information about Animation", 58 | 59 | 60 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_model.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a11a042c0d2252843b536297a38a7bc1 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_resources.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/ReporterResource/template/en/template_resources.js -------------------------------------------------------------------------------- /ReporterResource/template/en/template_resources.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8fe8ae30559657c4c94ca8a1e4b13edb 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_scene.js: -------------------------------------------------------------------------------- 1 | g_en_template_scene = { 2 | // common 3 | tplNoPlatform : "none", 4 | tplWarning : "Warning", 5 | tplSearchFilter : "SearchFilter", 6 | tplSearchTitle : "Search", 7 | tplSearchBtn : "Search", 8 | tplSearchResultTitle : "Search Result", 9 | tplCheckNon : "No Check", 10 | tplCheckEnableOnly : "Enable Only", 11 | tplCheckDisableOnly : "Disable Only", 12 | tplHitNum : "HitNum", 13 | tplItem : "Item", 14 | tplCheck : "Check", 15 | tplCondition : "Condition", 16 | tplAddConditionBtn : "Add condition", 17 | tplDelConditionBtn : "delete", 18 | tplFileInclude : "If filepath includes below words", 19 | tplFileExclude : "If filepath doesn't include below words", 20 | 21 | // specific 22 | tplBasicInfo : "Basic", 23 | tplValueNum : "Number", 24 | tplRootGameObjectNum : "RootGameObject Number", 25 | tplScenePath : "Path", 26 | tplObjectType : "Object Type", 27 | tplAllGameObjectNum : "All GameObject Number", 28 | tplAllComponentNum : "All Component Number", 29 | tplAllMonoBehaviourNum : "All MonoBehaviour Number", 30 | tplDependsTitle : "Depends", 31 | tplAllComponentsTitle : "Component Num In Scene", 32 | 33 | tplBuildSceenOnly : "Build target scene only", 34 | tplCondDependsFiles : "If the scene has files that includes this word" 35 | 36 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_scene.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 255430788c26a9148a9d94204bf833fe 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_texture.js: -------------------------------------------------------------------------------- 1 | g_en_template_texture = { 2 | // common 3 | tplNoPlatform : "none", 4 | tplWarning : "Warning", 5 | tplSearchFilter : "SearchFilter", 6 | tplSearchTitle : "Search", 7 | tplSearchBtn : "Search", 8 | tplSearchResultTitle : "Search Result", 9 | tplCheckNon : "No Check", 10 | tplCheckEnableOnly : "Enable Only", 11 | tplCheckDisableOnly : "Disable Only", 12 | tplHitNum : "HitNum", 13 | tplItem : "Item", 14 | tplCheck : "Check", 15 | tplCondition : "Condition", 16 | tplAddConditionBtn : "Add condition", 17 | tplDelConditionBtn : "delete", 18 | tplFileInclude : "If filepath includes below words", 19 | tplFileExclude : "If filepath doesn't include below words", 20 | 21 | // specific 22 | tplCondBasic : "Basic", 23 | tplCondFormat : "Format", 24 | tplCondImportType : "ImportType", 25 | tplCondTextureSize : "TextureSize", 26 | tplCondMipMapCheck : "MipMap check ", 27 | tplCondReadWriteCheck : "Read/Write check ", 28 | tplCondPow2Check : "Pow2 check", 29 | tplCheckNonPow2Only : "Non pow2 only", 30 | tplCondWidth : "Width", 31 | tplCondHeight : "Height", 32 | tplCondSpriteTag : "SpritePackTag", 33 | 34 | // in result 35 | tplResultPath : "Path", 36 | tplResultType : "Type", 37 | tplResultFormat : "Format", 38 | tplResultSize : "Size", 39 | tplResultNonPow2 : "isn't pow2 size", 40 | tplResultSpriteTag : "SpritePackingTag", 41 | tplResultMaxSize : "MaxSize", 42 | tplResultMipMap : "MipMap", 43 | tplResultReadWrite : "Read/Write", 44 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_texture.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af36dc3a3ce8b674db08e79513631f22 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/en/template_tips.js: -------------------------------------------------------------------------------- 1 | g_en_template_tips = { 2 | tplAboutThisTipsTitle : "About this TIPS", 3 | tplAboutThisTipsMessage : "This tips helps you to optimize your application", 4 | // texture 5 | tplTipsForTextureTitle : "TIPS for Texture", 6 | tplTipsForTextureM1 : "Make sure Read/Write is disabled", 7 | tplTipsForTextureM2 : "Disable mipmaps if possible", 8 | tplTipsForTextureM3 : "Make sure textures are Compressed.", 9 | tplTipsForTextureM4 : "Ensure sizes aren't too large", 10 | 11 | // audio 12 | tplTipsForAudioTitle : "TIPS for Audio", 13 | tplTipsForAudioM1 : "Mp3 compression on iOS", 14 | tplTipsForAudioM2 : "Vorbis compression on Android", 15 | tplTipsForAudioM3 : "Force Mono for mobile games.", 16 | tplTipsForAudioM4 : "Set bitrate as low as possible", 17 | 18 | // model 19 | tplTipsForModelTitle : "TIPS for Model", 20 | tplTipsForModelM1 : "Make sure Read/Write is disable", 21 | tplTipsForModelM2 : "Disable rig on non-character models", 22 | tplTipsForModelM3 : "Copy avatars for characters with shared rigs", 23 | tplTipsForModelM4 : "Enable mesh compression", 24 | 25 | // resource directory 26 | tplTipsForResourcesTitle : "TIPS for Resources directory", 27 | tplTipsForResourcesM1 : 'Make sure there are no "Resources" directory in the project.', 28 | tplTipsForResourcesM2 : 'It waste memory, putting "Resources" directory in the project.', 29 | tplTipsForResourcesM3 : 'Use AssetBundle instead of using "Resources.Load"', 30 | 31 | // asset bundle 32 | tplTipsForAbTitle : "TIPS for AssetBundle", 33 | tplTipsForAbM1 : "", 34 | tplTipsForAbM2 : "", 35 | 36 | 37 | 38 | }; -------------------------------------------------------------------------------- /ReporterResource/template/en/template_tips.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51e0acecf2ccf084091e01fae0b397e1 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65db351e768fd89429b54f2feccea737 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_ab.js: -------------------------------------------------------------------------------- 1 | g_jp_template_ab = { 2 | // common 3 | tplNoPlatform : "指定なし", 4 | tplWarning : "警告", 5 | tplSearchFilter : "検索条件", 6 | tplSearchTitle : "検索", 7 | tplSearchBtn : "検索する", 8 | tplSearchResultTitle : "検索結果", 9 | tplCheckNon : "チェックなし", 10 | tplCheckEnableOnly : "Enableのみ", 11 | tplCheckDisableOnly : "Disable のみ", 12 | tplHitNum : "ヒット数", 13 | tplItem : "項目", 14 | tplCheck : "チェック", 15 | tplCondition : "条件", 16 | tplAddConditionBtn : "条件追加", 17 | tplDelConditionBtn : "削除", 18 | tplFileInclude : "以下の単語がファイルパスに含まれているもののみ", 19 | tplFileExclude : "以下の単語がファイルパスに含まれないもののみ", 20 | 21 | 22 | // specific 23 | tplCondIncludeDepends : "アセットバンドル内包ファイル及び依存ファイル", 24 | tplCondIncludeFiles : "AssetBundleに以下の名前を含むファイルが含まれていた場合", 25 | tplCondDependsFiles : "AssetBundleが以下の名前を含むファイルに依存していた場合", 26 | 27 | tplCondAssetBundleName : "AssetBundle名", 28 | tplCondIncludeAbName : "AssetBundleに以下の名前が含まれる場合", 29 | tplCondExcludeAbName : "AssetBundleに以下の名前が含まれない場合", 30 | 31 | // result 32 | tplResultFileList : "ファイル一覧", 33 | tplResultFileDependencies : "依存ファイル一覧", 34 | tplResultAbDependencies : "依存ファイル一覧", 35 | tplResultType : "Type", 36 | tplResultPath : "Path", 37 | tplResultBundleName : "bundle name", 38 | tplResultBundleValiant : "bundle valiant", 39 | tplResultNoDependencies : "特に依存はありません", 40 | tplResultListen : "視聴", 41 | 42 | tplResultDuplicateFiles : "重複してAssetBundleに内包しているファイル", 43 | tplResultNoDuplicate : "重複したファイルは特にありません" 44 | 45 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_ab.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c80cd2244569cee4daad3bb8f537f505 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_audio.js: -------------------------------------------------------------------------------- 1 | g_jp_template_audio = { 2 | // common 3 | tplNoPlatform : "指定なし", 4 | tplWarning : "警告", 5 | tplSearchFilter : "検索条件", 6 | tplSearchTitle : "検索", 7 | tplSearchBtn : "検索する", 8 | tplSearchResultTitle : "検索結果", 9 | tplCheckNon : "チェックなし", 10 | tplCheckEnableOnly : "Enableのみ", 11 | tplCheckDisableOnly : "Disable のみ", 12 | tplHitNum : "ヒット数", 13 | tplItem : "項目", 14 | tplCheck : "チェック", 15 | tplCondition : "条件", 16 | tplAddConditionBtn : "条件追加", 17 | tplDelConditionBtn : "削除", 18 | tplFileInclude : "以下の単語がファイルパスに含まれているもののみ", 19 | tplFileExclude : "以下の単語がファイルパスに含まれないもののみ", 20 | 21 | // specific 22 | tplCondBasic : "基本設定", 23 | tplCondLoadType : "LoadType", 24 | tplCondFormat : "Format", 25 | tplCondSamplingRate : "Hz(サンプリングレート)", 26 | 27 | tplCondForceToMono : "Force To Mono", 28 | tplCondLoadBackGround : "Load In BackGround", 29 | tplCondPreload : "Preload AudioData", 30 | 31 | // in result 32 | tplResultListen : "視聴", 33 | tplResultPath : "Path", 34 | tplResultForceToMono : "Force To Mono", 35 | tplResultLoadBackGround : "Load in Background", 36 | tplResultPreload : "Preload Audio Data", 37 | tplResultLoadType : "LoadType", 38 | tplResultFormat : "Format", 39 | tplResultSampleSetting : "SampleRateSetting", 40 | tplResultSampleOverride : "SampleRateOverride" 41 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_audio.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92e4ba4913d81e846bccf39b233721c6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_index.js: -------------------------------------------------------------------------------- 1 | g_jp_template_index = { 2 | tplTextureTitle : "Texture Report" , 3 | tplTextureExplain : "Texture のImport Settingsを確認できます" , 4 | tplAudioTitle : "Audio Report" , 5 | tplAudioExplain : "AudioClipの Import Settingsを確認できます" , 6 | tplModelTitle : "Model Report" , 7 | tplModelExplain : "Modelの Import Settingsを確認できます" , 8 | tplAbTitle : "AssetBundle Report" , 9 | tplAbExplain : "AssetBundleの Import Settingsを確認できます" , 10 | tplAbDupTitle : "AssetBundle Duplicate Report" , 11 | tplAbDupExplain : "AssetBundle中にある重複アセットの確認が出来ます(AssetBundle Report でも、確認できます。こちらは簡易のまとめページです)" , 12 | tplResourceTitle : "Resources Report" , 13 | tplResourceExplain : "Resourcesフォルダがプロジェクトにないか確認できます。" , 14 | tplTipsTitle : "Tips" , 15 | tplTipsExplain : "Tips 情報です" , 16 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_index.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac6bc1031fc8dd64e84a8d89ea11c92f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_model.js: -------------------------------------------------------------------------------- 1 | g_jp_template_model = { 2 | // common 3 | tplNoPlatform : "指定なし", 4 | tplWarning : "警告", 5 | tplSearchFilter : "検索条件", 6 | tplSearchTitle : "検索", 7 | tplSearchBtn : "検索する", 8 | tplSearchResultTitle : "検索結果", 9 | tplCheckNon : "チェックなし", 10 | tplCheckEnableOnly : "Enableのみ", 11 | tplCheckDisableOnly : "Disable のみ", 12 | tplHitNum : "ヒット数", 13 | tplItem : "項目", 14 | tplCheck : "チェック", 15 | tplCondition : "条件", 16 | tplAddConditionBtn : "条件追加", 17 | tplDelConditionBtn : "削除", 18 | tplFileInclude : "以下の単語がファイルパスに含まれているもののみ", 19 | tplFileExclude : "以下の単語がファイルパスに含まれないもののみ", 20 | 21 | // specific 22 | tplCondBasic : "基本設定", 23 | tplCondScaleFactor : "ScaleFactor", 24 | tplCondRig : "Rig", 25 | tplCondSourceAvatar : "SourceAvatar", 26 | tplCondVertObjNum : "頂点/Object数", 27 | 28 | tplCheckAnimation : "Animation チェック", 29 | tplCheckReadWrite : "Read/Write チェック", 30 | tplCheckOptimizeMesh : "OptimizeMesh チェック", 31 | tplIncludeOnly : "含むモノのみ", 32 | tplNoIncludeOnly : "含まないモノのみ", 33 | tplCondVertex : "頂点", 34 | tplCondObject : "オブジェクト", 35 | 36 | // in result 37 | tplResultPath : "Path", 38 | tplResultObjectNum : "Object 数 ", 39 | tplVertexNum : "頂点数", 40 | tplResultScaleFactor : "Scale Factor", 41 | tplResultReadWrite : "Read/Write", 42 | tplResultOptimizeMesh : "OptimizeMesh", 43 | tplResultImportMaterial : "ImportMaterial", 44 | tplResultImportMaterialMode : "ImportMaterialMode", 45 | tplResultGenCollider : "Generate Collider", 46 | 47 | tplResultRigType : "タイプ", 48 | tplResultRigGeneration : "Generation", 49 | tplResultRigSrcAvatar : "SourceAvatar", 50 | 51 | tplResultAnimBasic : "基本設定", 52 | tplResultAnimCompress : "animationCompression", 53 | tplResultAnimList : "Animation list", 54 | 55 | tplResultInfoPreview : "プレビュー", 56 | tplResultInfoModel : "Modelに関する情報", 57 | tplResultInfoRig : "Rigに関する情報", 58 | tplResultInfoAnim : "Animationに関する情報", 59 | 60 | 61 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_model.js.1~: -------------------------------------------------------------------------------- 1 | g_jp_template_model = { 2 | // common 3 | tplNoPlatform : "指定なし", 4 | tplWarning : "警告", 5 | tplSearchFilter : "検索条件", 6 | tplSearchTitle : "検索", 7 | tplSearchBtn : "検索する", 8 | tplSearchResultTitle : "検索結果", 9 | tplCheckNon : "チェックなし", 10 | tplCheckEnableOnly : "Enableのみ", 11 | tplCheckDisableOnly : "Disable のみ", 12 | tplHitNum : "ヒット数", 13 | tplItem : "項目", 14 | tplCheck : "チェック", 15 | tplCondition : "条件", 16 | tplAddConditionBtn : "条件追加", 17 | tplDelConditionBtn : "削除", 18 | tplFileInclude : "以下の単語がファイルパスに含まれているもののみ", 19 | tplFileExclude : "以下の単語がファイルパスに含まれないもののみ", 20 | 21 | // specific 22 | tplCondBasic : "基本設定", 23 | tplCondScaleFactor : "ScaleFactor", 24 | tplCondRig : "Rig", 25 | tplCondSourceAvatar : "SourceAvatar", 26 | tplCondVertObjNum : "頂点/Object数", 27 | 28 | tplCheckAnimation : "Animation チェック", 29 | tplCheckReadWrite : "Read/Write チェック", 30 | tplCheckOptimizeMesh : "OptimizeMesh チェック", 31 | tplIncludeOnly : "含むモノのみ", 32 | tplNoIncludeOnly : "含まないモノのみ", 33 | tplCondVertex : "頂点", 34 | tplCondObject : "オブジェクト", 35 | 36 | // in result 37 | tplResultPath : "Path", 38 | tplResultObjectNum : "Object 数 ", 39 | tplVertexNum : "頂点数", 40 | tplResultScaleFactor : "Scale Factor", 41 | tplResultReadWrite : "Read/Write", 42 | tplResultOptimizeMesh : "OptimizeMesh", 43 | tplResultImportMaterial : "ImportMaterial", 44 | tplResultGenCollider : "Generate Collider", 45 | 46 | tplResultRigType : "タイプ", 47 | tplResultRigGeneration : "Generation", 48 | tplResultRigSrcAvatar : "SourceAvatar", 49 | 50 | tplResultAnimBasic : "基本設定", 51 | tplResultAnimCompress : "animationCompression", 52 | tplResultAnimList : "Animation list", 53 | 54 | tplResultInfoPreview : "プレビュー", 55 | tplResultInfoModel : "Modelに関する情報", 56 | tplResultInfoRig : "Rigに関する情報", 57 | tplResultInfoAnim : "Animationに関する情報", 58 | 59 | 60 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_model.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d238cc7557ad80c46a520a929063e349 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_resources.js: -------------------------------------------------------------------------------- 1 | g_jp_template_resources = { 2 | // common 3 | tplNoPlatform : "指定なし", 4 | tplWarning : "警告", 5 | tplSearchFilter : "検索条件", 6 | tplSearchTitle : "検索", 7 | tplSearchBtn : "検索する", 8 | tplSearchResultTitle : "検索結果", 9 | tplCheckNon : "チェックなし", 10 | tplCheckEnableOnly : "Enableのみ", 11 | tplCheckDisableOnly : "Disable のみ", 12 | tplHitNum : "ヒット数", 13 | tplItem : "項目", 14 | tplCheck : "チェック", 15 | tplCondition : "条件", 16 | tplAddConditionBtn : "条件追加", 17 | tplDelConditionBtn : "削除", 18 | tplFileInclude : "以下の単語がファイルパスに含まれているもののみ", 19 | tplFileExclude : "以下の単語がファイルパスに含まれないもののみ", 20 | 21 | // specific 22 | tplResultNoResourcesTitle : 'Resourcesフォルダが見つかりませんでした', 23 | tplResultNoResourcesBody : 'このプロジェクト内にはResourcesフォルダが含まれていません', 24 | 25 | tplResultBasic : '基本情報', 26 | 27 | tplResourcesWarningM1 : "Resourcesフォルダにアセットを入れると、メモリを余計に消費します。", 28 | tplResourcesWarningM2 : "(Resources.Load 等でロードするためにファイルの依存関係等の情報が常にメモリ上に乗ります。) ", 29 | 30 | tplResultResourceTitle : "Resources内に含まれるファイル", 31 | tplResultDependencies : "依存ファイル", 32 | tplResultNoDependencies : "依存ファイルはありません。", 33 | tplResultPath : "Path", 34 | tplResultType : "Type", 35 | tplResourcesDependencies : "依存するファイル" 36 | 37 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_resources.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 340b2a4033831ff4399943fc50995ae8 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_scene.js: -------------------------------------------------------------------------------- 1 | g_jp_template_scene = { 2 | // common 3 | tplNoPlatform : "指定なし", 4 | tplWarning : "警告", 5 | tplSearchFilter : "検索条件", 6 | tplSearchTitle : "検索", 7 | tplSearchBtn : "検索する", 8 | tplSearchResultTitle : "検索結果", 9 | tplCheckNon : "チェックなし", 10 | tplCheckEnableOnly : "Enableのみ", 11 | tplCheckDisableOnly : "Disable のみ", 12 | tplHitNum : "ヒット数", 13 | tplItem : "項目", 14 | tplCheck : "チェック", 15 | tplCondition : "条件", 16 | tplAddConditionBtn : "条件追加", 17 | tplDelConditionBtn : "削除", 18 | tplFileInclude : "以下の単語がファイルパスに含まれているもののみ", 19 | tplFileExclude : "以下の単語がファイルパスに含まれないもののみ", 20 | 21 | // specific 22 | tplBasicInfo : "基本情報", 23 | tplValueNum : "数", 24 | tplRootGameObjectNum : "RootGameObject数", 25 | tplScenePath : "パス", 26 | tplObjectType : "オブジェクトタイプ", 27 | tplAllGameObjectNum : "全GameObject数", 28 | tplAllComponentNum : "全Component数", 29 | tplAllMonoBehaviourNum : "全MonoBehaviour数", 30 | tplDependsTitle : "依存関係", 31 | tplAllComponentsTitle : "シーン内コンポーネント数", 32 | 33 | 34 | tplBuildSceenOnly : "ビルド対象のシーンのみ", 35 | tplCondDependsFiles : "Sceneが以下の名前を含むファイルに依存していた場合のみ" 36 | 37 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_scene.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 635c18d555241f94681f470c1779aec9 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_texture.js: -------------------------------------------------------------------------------- 1 | g_jp_template_texture = { 2 | // common 3 | tplNoPlatform : "指定なし", 4 | tplWarning : "警告", 5 | tplSearchFilter : "検索条件", 6 | tplSearchTitle : "検索", 7 | tplSearchBtn : "検索する", 8 | tplSearchResultTitle : "検索結果", 9 | tplCheckNon : "チェックなし", 10 | tplCheckEnableOnly : "Enableのみ", 11 | tplCheckDisableOnly : "Disable のみ", 12 | tplHitNum : "ヒット数", 13 | tplItem : "項目", 14 | tplCheck : "チェック", 15 | tplCondition : "条件", 16 | tplAddConditionBtn : "条件追加", 17 | tplDelConditionBtn : "削除", 18 | tplFileInclude : "以下の単語がファイルパスに含まれているもののみ", 19 | tplFileExclude : "以下の単語がファイルパスに含まれないもののみ", 20 | 21 | // specific 22 | tplCondBasic : "基本設定", 23 | tplCondFormat : "フォーマット", 24 | tplCondImportType : "ImportType", 25 | tplCondTextureSize : "Textureサイズ", 26 | tplCondMipMapCheck : "MipMap チェック ", 27 | tplCondReadWriteCheck : "Read/Write チェック", 28 | tplCondPow2Check : "2の累乗チェック", 29 | tplCheckNonPow2Only : "2の累乗サイズ以外のみ", 30 | tplCondWidth : "幅", 31 | tplCondHeight : "高さ", 32 | tplCondSpriteTag : "SpritePackTag", 33 | 34 | 35 | // in result 36 | tplResultPath : "Path", 37 | tplResultType : "Type", 38 | tplResultFormat : "フォーマット", 39 | tplResultSize : "サイズ", 40 | tplResultNonPow2 : "2の累乗ではありません", 41 | tplResultMaxSize : "最大Size", 42 | tplResultSpriteTag : "SpritePackingTag", 43 | tplResultMipMap : "MipMap", 44 | tplResultReadWrite : "Read/Write", 45 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_texture.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3436384272e00974c94296a766a1c37e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_tips.js: -------------------------------------------------------------------------------- 1 | g_jp_template_tips = { 2 | tplAboutThisTipsTitle : "このTIPSについて", 3 | tplAboutThisTipsMessage : "このTIPSにはアプリ自体を最適化するための情報があります。", 4 | // texture 5 | tplTipsForTextureTitle : "Texture に関するTIPS", 6 | tplTipsForTextureM1 : "Read/Write をOFFにしないと、メモリが余計に確保されます", 7 | tplTipsForTextureM2 : "MipMaps が必要ない2D系であれば、OFFにしましょう", 8 | tplTipsForTextureM3 : "圧縮設定になっているか確認しましょう", 9 | tplTipsForTextureM4 : "適切なサイズになっているか確認しましょう", 10 | 11 | // audio 12 | tplTipsForAudioTitle : "Audioに関するTIPS", 13 | tplTipsForAudioM1 : "iOSでは MP3圧縮が良いでしょう", 14 | tplTipsForAudioM2 : "Androidでは、Vorbis圧縮が良いでしょう", 15 | tplTipsForAudioM3 : "Force Monoを活用して容量を減らしましょう", 16 | tplTipsForAudioM4 : "ビットレート設定は可能な範囲で下げてください", 17 | 18 | // model 19 | tplTipsForModelTitle : "Modelに関するTIPS", 20 | tplTipsForModelM1 : "Read/Write をOFFにしないと、メモリが余計に取られます", 21 | tplTipsForModelM2 : "キャラクターでないモデルは リグをDisableにしましょう", 22 | tplTipsForModelM3 : "同一リグならば Avatarを使いまわしましょう", 23 | tplTipsForModelM4 : "Mesh CompressionをEnableにしましょう", 24 | 25 | // resource directory 26 | tplTipsForResourcesTitle : "Resourcesに関するTIPS", 27 | tplTipsForResourcesM1 : 'Resourcesフォルダはプロジェクトから除外しましょう', 28 | tplTipsForResourcesM2 : 'Resourcesフォルダは利用する/しないに関わらずプロジェクト内にあるだけでメモリを消費します', 29 | tplTipsForResourcesM3 : 'Resources.Loadを使わず AssetBundleを利用しましょう', 30 | 31 | // asset bundle 32 | tplTipsForAbTitle : "TIPS for AssetBundle", 33 | tplTipsForAbM1 : "", 34 | tplTipsForAbM2 : "", 35 | 36 | 37 | 38 | }; -------------------------------------------------------------------------------- /ReporterResource/template/jp/template_tips.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f6f4560c4e8459428aa02eb2c850196 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/third_party.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53da2ec6ea693cc48a8a02e12150fd2c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ReporterResource/third_party/License_jquery.txt: -------------------------------------------------------------------------------- 1 | 2 | Copyright jQuery Foundation and other contributors, https://jquery.org/ 3 | 4 | This software consists of voluntary contributions made by many 5 | individuals. For exact contribution history, see the revision history 6 | available at https://github.com/jquery/jquery 7 | 8 | The following license applies to all parts of this software except as 9 | documented below: 10 | 11 | ==== 12 | 13 | Permission is hereby granted, free of charge, to any person obtaining 14 | a copy of this software and associated documentation files (the 15 | "Software"), to deal in the Software without restriction, including 16 | without limitation the rights to use, copy, modify, merge, publish, 17 | distribute, sublicense, and/or sell copies of the Software, and to 18 | permit persons to whom the Software is furnished to do so, subject to 19 | the following conditions: 20 | 21 | The above copyright notice and this permission notice shall be 22 | included in all copies or substantial portions of the Software. 23 | 24 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 28 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 29 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 30 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 31 | 32 | ==== 33 | 34 | All files located in the node_modules and external directories are 35 | externally maintained libraries used by this software which have their 36 | own licenses; we recommend you read them, as their terms may differ from 37 | the terms above. -------------------------------------------------------------------------------- /ReporterResource/third_party/License_jquery.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c8546e25280920b4b8c12d1f4737f494 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/third_party/jquery-2.2.3.min.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 775b54aed8e6f804f8f5d1d96bbc083d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ReporterResource/tips.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | TIPS 5 | 6 | 7 | 8 | 9 | 16 | 17 | 18 |
19 |
20 | TOP 21 |
22 |

TIPS

23 |
24 |
25 |
26 |
27 |
28 |
29 |

About this TIPS

30 | 31 |

32 |
    33 |
  • 34 |
  • 35 |
  • 36 |
  • 37 |
38 | 39 |

40 |
    41 |
  • 42 |
  • 43 |
  • 44 |
  • 45 |
46 |

47 |
    48 |
  • 49 |
  • 50 |
  • 51 |
  • 52 |
53 | 54 |

55 |
    56 |
  • 57 |
  • 58 |
  • 59 |
60 |
61 | 62 | -------------------------------------------------------------------------------- /ReporterResource/tips.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24c691280c0bf054f9c557a6627c583c 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wotakuro/AssetsReporter/c28c98abf93532f239ce006f63c44200e94bc939/package.json -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cffaaa25f5a0bba45a23302e938b2e86 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------