Спасибо за скрипты 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()) != "") {
Он находит все что не включено в билд и показывает и может удалить их. Это все кидать в папку Editor там потом менюшка появится вверху "Window/CleanUpWindow" Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
beril, я, конечно, не хочу надоедать, но у меня не получается. Я скинул два этих скрипта в c/program files/unity/editor. В юнити вверху во вкладке windows не появилось CleanUpWindows
Чёт не стыкуется. "Заказчик имеет большой опыт создания софта, сильная инженерная команда ", Ищем команду для реализации игры на Unity3d с нуля. Похоже на "Нам лень делать прототип, но если прокатит Вы нам не нужны".
The variable `lastPosition' is assigned but its value is never used ?
Это предупреждение а не ошибка на функционал не влияет. Ты обьявил переменную и присвоил ей знаяение , но нигде в коде не использовал ее Отключить такие ошибки можно так
Код
#pragma warning disable 0168 // variable declared but not used. #pragma warning disable 0219 // variable assigned but not used. #pragma warning disable 0414 // private field assigned but not used.
В подпись мою глянь там два простых примера инвентаря на UI и GUI. Все доволи старое но смысл думаю можно уловить Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
Я о том, что вся эта махина с тоннами функционала в принципе не нужна, код писать можно и в блокноте.
Не представляю свою жизнь без Resharper, CodeMaid и Superchargber, как вообще без этих плагинов можно работать? ) Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
UFPS? Интересно смотрится и бодренько, демки часом нету ? Какая протяженность игры ? За сколько собираетесь продавать когда пройдете гринлайт? Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
Ииии? Как это относится к вопросу о лимитах, версиях и бесплатности? Можно, конечно, пользоваться и блокнотом, если не нужны элементарные highlighting, IntelliSense, форматирование кода, пре-компиляция, совместная отладки и т.д. Ну и тот, кому не нужна "махина с тоннами функционала", уже потихоньку перешли на VS Code. Но без Mono (на macOS), конечно, не обойтись.