├── ReporterResource
├── result
│ ├── result_data_is_here.txt
│ └── result_data_is_here.txt.meta
├── excludeList.txt
├── template
│ ├── en
│ │ ├── template_resources.js
│ │ ├── template_ab.js.meta
│ │ ├── template_audio.js.meta
│ │ ├── template_index.js.meta
│ │ ├── template_model.js.meta
│ │ ├── template_scene.js.meta
│ │ ├── template_tips.js.meta
│ │ ├── template_resources.js.meta
│ │ ├── template_texture.js.meta
│ │ ├── template_index.js
│ │ ├── template_scene.js
│ │ ├── template_audio.js
│ │ ├── template_texture.js
│ │ ├── template_tips.js
│ │ ├── template_ab.js
│ │ ├── template_model.js.1~
│ │ └── template_model.js
│ ├── en.meta
│ ├── jp.meta
│ └── jp
│ │ ├── template_ab.js.meta
│ │ ├── template_audio.js.meta
│ │ ├── template_index.js.meta
│ │ ├── template_model.js.meta
│ │ ├── template_scene.js.meta
│ │ ├── template_tips.js.meta
│ │ ├── template_resources.js.meta
│ │ ├── template_texture.js.meta
│ │ ├── template_index.js
│ │ ├── template_scene.js
│ │ ├── template_resources.js
│ │ ├── template_audio.js
│ │ ├── template_texture.js
│ │ ├── template_tips.js
│ │ ├── template_ab.js
│ │ ├── template_model.js.1~
│ │ └── template_model.js
├── index.html.meta
├── tips.html.meta
├── css
│ ├── report.css.meta
│ └── report.css
├── excludeList.txt.meta
├── js
│ ├── reporter.js.meta
│ ├── warning_audio.js.meta
│ ├── warning_model.js.meta
│ ├── warning_texture.js.meta
│ ├── warning_audio.js
│ ├── warning_model.js
│ ├── warning_texture.js
│ └── reporter.js
├── report_ab.html.meta
├── js.meta
├── report_audio.html.meta
├── report_model.html.meta
├── report_scene.html.meta
├── report_texture.html.meta
├── css.meta
├── report_duplicate_ab.html.meta
├── report_resources.html.meta
├── result.meta
├── template.meta
├── third_party.meta
├── third_party
│ ├── License_jquery.txt.meta
│ ├── jquery-2.2.3.min.js.meta
│ └── License_jquery.txt
├── tips.html
├── index.html
├── report_duplicate_ab.html
├── report_resources.html
├── report_audio.html
├── report_scene.html
├── report_texture.html
├── report_ab.html
└── report_model.html
├── package.json
├── Documentation~
└── image
│ ├── menu.png
│ ├── ReporterAb.png
│ ├── SceneReporter.png
│ ├── audioReporter.png
│ ├── ja
│ ├── ReporterAb.png
│ ├── audioReporter.png
│ ├── modelReporter.png
│ ├── reporterWindow.png
│ ├── sceneReporter.png
│ ├── textureReporter.png
│ └── ResourcesReporter.png
│ ├── modelReporter.png
│ ├── reporterWindow.png
│ ├── ResourcesReporter.png
│ └── textureReporter.png
├── LICENSE.meta
├── README.ja.md.meta
├── README.md.meta
├── package.json.meta
├── Editor.meta
├── Editor
├── GUI.meta
├── AssetsReporter.Editor.asmdef.meta
├── Inner
│ ├── AssetsReporterLanguageData.cs
│ ├── AudioReporter.cs.meta
│ ├── ModelReporter.cs.meta
│ ├── SceneReporter.cs.meta
│ ├── AssetBundleReporter.cs.meta
│ ├── AssetsReporterUtils.cs.meta
│ ├── ResourcesReporter.cs.meta
│ ├── TextureReporter.cs.meta
│ ├── AssetsReporterLanguageData.cs.meta
│ ├── AudioReporter.cs
│ ├── ResourcesReporter.cs
│ ├── SceneReporter.cs
│ ├── ModelReporter.cs
│ ├── TextureReporter.cs
│ ├── AssetBundleReporter.cs
│ └── AssetsReporterUtils.cs
├── Inner.meta
├── GUI
│ ├── AssetsReporterWindow.cs.meta
│ └── AssetsReporterWindow.cs
└── AssetsReporter.Editor.asmdef
├── ReporterResource.meta
├── .gitignore
├── LICENSE
├── README.ja.md
└── README.md
/ReporterResource/result/result_data_is_here.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ReporterResource/excludeList.txt:
--------------------------------------------------------------------------------
1 | Assets/Store/.*
2 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/package.json
--------------------------------------------------------------------------------
/Documentation~/image/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/menu.png
--------------------------------------------------------------------------------
/Documentation~/image/ReporterAb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ReporterAb.png
--------------------------------------------------------------------------------
/Documentation~/image/SceneReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/SceneReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/audioReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/audioReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/ja/ReporterAb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ja/ReporterAb.png
--------------------------------------------------------------------------------
/Documentation~/image/modelReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/modelReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/reporterWindow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/reporterWindow.png
--------------------------------------------------------------------------------
/Documentation~/image/ResourcesReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ResourcesReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/ja/audioReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ja/audioReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/ja/modelReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ja/modelReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/ja/reporterWindow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ja/reporterWindow.png
--------------------------------------------------------------------------------
/Documentation~/image/ja/sceneReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ja/sceneReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/textureReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/textureReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/ja/textureReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ja/textureReporter.png
--------------------------------------------------------------------------------
/Documentation~/image/ja/ResourcesReporter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/Documentation~/image/ja/ResourcesReporter.png
--------------------------------------------------------------------------------
/ReporterResource/template/en/template_resources.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wotakuro/AssetsReporter/HEAD/ReporterResource/template/en/template_resources.js
--------------------------------------------------------------------------------
/LICENSE.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 90a4bd0a922d2a24da9de7f4c8ad995d
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/README.ja.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bb259c9c1eddb454290e0a11f98b7658
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/README.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cf919a0933d26c84686d0d4744f768bf
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cffaaa25f5a0bba45a23302e938b2e86
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4909c736a3c046245995107c1fbfffb7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ReporterResource/index.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9e562c2773cc150418f9870ab619638f
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ReporterResource/tips.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 24c691280c0bf054f9c557a6627c583c
3 | TextScriptImporter:
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 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cefded864b145564aadedf1b1e1d572b
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ReporterResource/js/reporter.js.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4240a3cbbbd4d5747a45998ade610fc7
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ReporterResource/report_ab.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 03b59ff2cf8ef4f4981ac3e2da0a75a7
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/js.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4b8763ff8a9232743a85aba352070b7a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0b38bb796e1338f45b51592364a54379
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ReporterResource/report_audio.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 83b607d6e338e0c4c820fb7b1f3eb871
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ReporterResource/report_model.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3f2a27a87a0e4bb47b51723fade976ac
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2527a89879e172a44b7f5f52d1cde0c0
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ReporterResource/css.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d0eecee93436eaf46b38801194a8fbdc
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/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_duplicate_ab.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b59ac3d452b294b409f77c8b8e52c34d
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ReporterResource/report_resources.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6dab3a7b1906a5648b7aa6874ab5a0c8
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 |
--------------------------------------------------------------------------------
/Editor/AssetsReporter.Editor.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 55269ae81641776479ba2e49eb34e1ce
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e9febd7ed3f55474f9461339affa6416
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0ec27d320c0bbc84a9df31a5421a4e9f
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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_scene.js.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 255430788c26a9148a9d94204bf833fe
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c80cd2244569cee4daad3bb8f537f505
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ac6bc1031fc8dd64e84a8d89ea11c92f
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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_scene.js.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 635c18d555241f94681f470c1779aec9
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c8546e25280920b4b8c12d1f4737f494
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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_texture.js.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: af36dc3a3ce8b674db08e79513631f22
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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_texture.js.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3436384272e00974c94296a766a1c37e
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 |
--------------------------------------------------------------------------------
/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/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.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/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/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/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/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/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/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 |
--------------------------------------------------------------------------------
/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/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 | }
--------------------------------------------------------------------------------
/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_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 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/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/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/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 | };
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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_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/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/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_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/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/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_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/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_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_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/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/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:
--------------------------------------------------------------------------------
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/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:
--------------------------------------------------------------------------------
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 | };
--------------------------------------------------------------------------------
/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 | 
22 |
23 | メニューの「Tools/UTJ/AssetsReporter」を押すことで上記Windowが開きます。
24 |
25 | Texture/Model/Audio等の項目別に呼び出して使います。
26 | 「Report」ボタンを押すとプロジェクト内を解析し、ブラウザで表示することが出来ます。
27 |
28 | それぞれについては以下にて。
29 |
30 |
31 |
32 |
33 | # TextureReporter
34 | 
35 |
36 | プロジェクト内のTextureの設定をレポートします。
37 | 圧縮フォーマットは適切かなどの確認等に使えればと思います。
38 |
39 |
40 | # ModelReporter
41 | 
42 |
43 | プロジェクト内のModelの設定をレポートします。
44 | Rigの設定はどうなっているか、Mesh最適化等はちゃんとしているか等々確認できます
45 |
46 |
47 | # AudioReporter
48 | 
49 |
50 | プロジェクト内のAudioの設定をレポートします。
51 | 圧縮フォーマット等の確認にお使いください
52 |
53 |
54 | # AssetBundleReporter
55 | 
56 |
57 | 作成予定のAssetBundleを閲覧可能な形にします
58 |
59 |
60 | # SceneReporter
61 | 
62 |
63 | シーンの状況を閲覧できます
64 |
65 |
66 |
67 | # ResourcesReporter
68 | 
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 |
--------------------------------------------------------------------------------
/ReporterResource/tips.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TIPS
5 |
6 |
7 |
8 |
9 |
16 |
17 |
18 |
28 |
29 |
About this TIPS
30 |
31 |
32 |
38 |
39 |
40 |
46 |
47 |
53 |
54 |
55 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 | 
24 |
25 | Click "Tools/UTJ/AssetsReporter" to open window.
26 |
27 |
28 | 
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 | 
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 | 
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 | 
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 | 
64 |
65 | You'll be able to watch assetbundle data on web browser.
66 |
67 |
68 | # SceneReporter
69 | 
70 |
71 | You can see the summary of each scenes.
72 |
73 |
74 | # ResourcesReporter
75 | 
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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------
/ReporterResource/report_duplicate_ab.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | AssetBundle Duplicate Report
5 |
6 |
7 |
8 |
9 |
10 |
128 |
129 |
130 |
131 |
134 |
AssetBundle Duplicate Report
135 |
139 |
140 |
146 |
147 |
--------------------------------------------------------------------------------
/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 = "";
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 += 'Item HitNum ';
101 | for( var idx in result ){
102 | str += '' + idx + " " + result[idx] + ' ';
103 | }
104 | str += '
';
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 |
--------------------------------------------------------------------------------
/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/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 | }
--------------------------------------------------------------------------------
/ReporterResource/report_resources.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Resources Report
5 |
6 |
7 |
8 |
9 |
10 |
168 |
169 |
170 |
171 |
174 |
Resources Report
175 |
179 |
180 |
181 |
182 |
183 |
184 |
188 |
189 |
Parent directories
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
--------------------------------------------------------------------------------
/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/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/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 | }
--------------------------------------------------------------------------------
/ReporterResource/report_audio.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | AudioClip Report
4 |
5 |
6 |
7 |
8 |
9 |
10 |
134 |
135 |
136 |
137 |
140 |
AudioClip Report
141 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
172 |
176 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
--------------------------------------------------------------------------------
/ReporterResource/report_scene.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Scene Report
4 |
5 |
6 |
7 |
8 |
9 |
186 |
187 |
188 |
189 |
192 |
Scene Report
193 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
--------------------------------------------------------------------------------
/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/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 | }
--------------------------------------------------------------------------------
/ReporterResource/report_texture.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Texture Report
5 |
6 |
7 |
8 |
9 |
10 |
11 |
155 |
156 |
157 |
158 |
161 |
Texture Report
162 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
193 |
197 |
211 |
212 |
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_ab.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | AssetBundle Report
5 |
6 |
7 |
8 |
9 |
10 |
236 |
237 |
238 |
239 |
242 |
AssetBundle Report
243 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
273 |
274 |
275 |
--------------------------------------------------------------------------------
/ReporterResource/report_model.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Model Report
5 |
6 |
7 |
8 |
9 |
10 |
11 |
194 |
195 |
196 |
197 |
200 |
Model Report
201 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
232 |
233 |
237 |
241 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
--------------------------------------------------------------------------------