Привет. Надо уменьшить размер билда, а для этого хочу сначала посмотреть, что вообще в этот билд входит. https://docs.unity3d.com/ru/current/Manual/ReducingFilesize.html вот тут говорится, " сразу после совершения сборки (выберите Open Editor Log в выпадающем меню маленькой иконки в правом верхнем углу окна Console)." Но я не могу найти этот Open Editor Log. Пробовал смотреть тот, что находится в users/AppData/Local/Unity, но там этого нет
dreenline, все что лежит в папке Resources, все ассеты которыми ты пользуешься в проекте и т.д. Что бы посоветовать тебе как уменьшать размер билда нужно больше информации, что за игра 2д/3д, какая платформа, в каком формате модели/текстуры/звуки и т.д. Unity3D Developer Ваш лучший помощник при разработке в Unity3D
dreenline, в Editor Log всё есть. Как его открыть - выше написали. Больше скажу, в этом логе можно увидеть ещё и размер выходных ресурсов, и сколько процентов от всего веса проекта они занимают. Долгожданный анонсик: State of War
Спасибо за скрипты Lertmind , который увы уже не с нами Все работает, щас с WebGL портами работают этот плагин спасает + подогнал еще немного под свои требования. Главное бэкапы не забываем делать)
Цитата
beril, погуглил, всё засрано рекламной этого ассета Asset Hunter 2, есть его первая версия Automatically locate all unused unity assets, кроме того один хороший человек изменил код, я исправил пару мест: убрал запятую из строчки по которой ищутся использованные ассеты и улучшил вывод dll от Mono. Вот код, кидать в Editor: CleanUpWindow.cs
Код
using UnityEngine; using UnityEditor; using System.IO; using System.Collections; using System.Collections.Generic;
// Add menu named "CleanUpWindow" to the Window menu [MenuItem("Window/CleanUpWindow")] static void Init() { // Get existing open window or if none, make a new one: CleanUpWindow window = (CleanUpWindow)EditorWindow.GetWindow(typeof(CleanUpWindow), true, "Project Cleanup", true); window.Show(); }
void OnGUI() {
if (needToBuild) { GUI.color = Color.red; GUILayout.Label("Are you sure you remembered to build project? Because you really need to...", EditorStyles.boldLabel); }
GUILayout.BeginHorizontal(); if (!needToBuild) { if (GUILayout.Button("Clear EditorLog")) { clearEditorLog(); needToBuild = true; } }
GUI.color = Color.green; if (GUILayout.Button("Load EditorLog")) loadEditorLog();
if (groupEnabled) { GUILayout.Label("DEPENDENCIES"); for (int i = 0; i < includedDependencies.Count; i++) { EditorGUILayout.LabelField("", string.Format("{0} {1}", i, includedDependencies[i])); } }
if (GUILayout.Button("Selected Objects")) PrintSelected();
GUILayout.Space(10);
GUI.color = Color.red;
if (GUILayout.Button("Delete Selected", GUILayout.MinHeight(32))) DeleteSelected();
GUILayout.EndHorizontal(); for (int i = 0; i < objList.Value.Count; i++) { if (objList.Value[i] != null) { GUILayout.BeginHorizontal(); EditorGUILayout.ObjectField(objList.Value[i], typeof(Object), false, GUILayout.MinWidth(340)); toggles[objList.Key][i] = EditorGUILayout.Toggle(toggles[objList.Key][i]); GUILayout.EndHorizontal(); } } } } } }
EditorGUILayout.EndScrollView();
EditorGUILayout.EndVertical();
EditorGUILayout.EndHorizontal(); }
}
void PrintSelected() { foreach (KeyValuePair<string, List<Object>> kvp in unUsedArranged) { for (int i = 0; i < toggles[kvp.Key].Count; i++) { if (toggles[kvp.Key][i] == true) Debug.Log("" + unUsedArranged[kvp.Key][i]); } } }
void DeleteSelected() { if (!EditorUtility.DisplayDialog("Delete Unused Assets", "Are you sure you want to delete the selected assets? There is no going back.", "Delete", "Aaagh, stop!")) return;
foreach (KeyValuePair<string, List<Object>> kvp in unUsedArranged) { for (int i = 0; i < toggles[kvp.Key].Count; i++) { if (toggles[kvp.Key][i]) { AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(unUsedArranged[kvp.Key][i])); } } }
AssetDatabase.Refresh();
loadEditorLog(); }
void ToggleAll(bool val) { foreach (KeyValuePair<string, List<bool>> kvp in toggles) { for (int i = 0; i < toggles[kvp.Key].Count; i++) toggles[kvp.Key][i] = val; } }
void ToggleKey(bool val, string key) { for (int i = 0; i < toggles[key].Count; i++) toggles[key][i] = val; }
try { // Have to use FileStream to get around sharing violations! //System.IO.File.WriteAllText(UnityEditorLogfile, string.Empty); FileStream FS = new FileStream(UnityEditorLogfile, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); //StreamReader SR = new StreamReader(FS); StreamWriter SW = new StreamWriter(FS);
try { // Have to use FileStream to get around sharing violations! FileStream FS = new FileStream(UnityEditorLogfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); StreamReader SR = new StreamReader(FS);
string line; while (!SR.EndOfStream && !(line = SR.ReadLine()).Contains("Mono dependencies included in the build")) {
} while (!SR.EndOfStream && (line = SR.ReadLine()) != "") { if (line.StartsWith("Dependency assembly - ")) { line = line.Substring("Dependency assembly - ".Length); } dependencyResult.Add(line); } while (!SR.EndOfStream && !(line = SR.ReadLine()).Contains("Used Assets")) {
} while (!SR.EndOfStream && (line = SR.ReadLine()) != "") {
Очень грустно это слышать.А за что его так? Он вроде всем всегда помогал и его соеты были просто незаменимы.Всегда четко и по делу А как вообще работает этот скрипт? Он находит все не используемые в сцене объекты и удаляет их? А если у меня в другой сцене используются эти объекты? Просмотрел их но толком ничего и не понял, это либо недостаток знаний, либо из-за того что почти не спал сегодня Эти скрипты повесить на пустой gameobject в сцене?
Сообщение отредактировал dreenline - Пятница, 09 Декабря 2016, 16:26
Он находит все что не включено в билд и показывает и может удалить их. Это все кидать в папку Editor там потом менюшка появится вверху "Window/CleanUpWindow"
beril, я, конечно, не хочу надоедать, но у меня не получается. Я скинул два этих скрипта в c/program files/unity/editor. В юнити вверху во вкладке windows не появилось CleanUpWindows
beril, я, конечно, не хочу надоедать, но у меня не получается. Я скинул два этих скрипта в c/program files/unity/editor. В юнити вверху во вкладке windows не появилось CleanUpWindows
beril, Добрый день. Я не разработчик а заказчик, в программировании слаб...( Мне очень нужно почистить build от ненужных ресурсов, в долгих поисках в интернете нашел ваш форум в котором ведеться речь именно про то что я ищу ) Помогите пожалуйста! ) Вот что я делаю: В проекте в Unity я создаю папку Editor далее в этой папке я создаю файл С#Script c названием CleanUpWindow и вставляю туда код из первого спойлера, далее создаю еще один файл С#Script с названием UsedAssets и вставляю туда код из второго спойлера. В общем при этих манипуляциях не появляется CleanUpWindows в разделе Windows. Появляется ошибка CS 1525 Помогите пожалуйста разобраться, очень важна эта тема. http://s1.uploadpics.ru/images/bk4NT-BUQS.png
ДанилаСтержнев, уже нанял, вот результат... приложение весит 700 mb ресурсов было передано на 200mb визуально вижу что в папке с проектом много не нужных ресурсов.
нажимаешь в окне консоли меню и нажимаешь Open Editor Log, там откроется текстовый файл , в нем ищешь через поиск Player size и там будет все, что входит в проект и сколько оно весит
вряд ли ... старый срипт не пользуюсь уже ним, не знаю как он работает, но можно попробывать сделав при этом бекап. Тот скрипт удаляет неиспользуемые ассеты, сжимать все нужно руками, смотреть что сколько весит и что можно ужать