Сегодня я оказался с новым проектом на руках, ну и естественно нужно было вникать в код, который написан был до меня.
В таких случаях могут и возникают ситуации, при которых не понятно, где используется скрипт, который ты сейчас читаешь. Примерно в такой же ситуации оказался сегодня я, когда обнаружил скрипт, абсолютно не связанный с остальным кодом. Вопрос был таков - а в каких сценах он вообще используется?
Юнити в стандарте может сказать вам, где в открытой сцене используется объект. Но когда сцен переваливает за 100 становится проблематично ориентироваться - логично, что открывать каждую сцену и проверять - не вариант.
Этот небольшой скриптик поможет вам в таких ситуациях.
Для того, чтобы сцены находились исправно в Edit/Project Settings/Editor параметр Asset Serialization Mode должен быть выставлен как Force Text. После этого все сцены должны быть пересохранены в этом формате вручную. //В принципе, если вы используете контроль версий, то вам так или иначе придется использовать этот режим.
using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; /// <summary> /// Проверяет, использовался ли выбранный файл в какой-либо сцене и если да, то в какой /// Добавляется в контекстное меню файлов в папке проекта /// </summary> public static class SystemObjectFindUsables { [MenuItem("Assets/Где используется?")] public static void CheckUsables() { var path = AssetDatabase.GetAssetPath(Selection.activeObject); if (string.IsNullOrEmpty(path)) { Debug.LogWarning("Выберите файл из проекта для проверки на использование"); return; } var guid = AssetDatabase.AssetPathToGUID(path); var references = GetReferencesScenes(guid); Debug.Log("[" + Path.GetFileName(path) + "] Связанные сцены: " + references.Count + "\n" + string.Join("\n", references.ToArray())); } private static List<string> GetReferencesScenes(string guid) { var paths = AssetDatabase.GetAllAssetPaths(); var result = new List<string>(); foreach (var path in paths) { if (!path.EndsWith(".unity")) continue; var sceneAsText = File.ReadAllText(path); if (sceneAsText.Contains(guid)) result.Add(path); } return result; } }
Смотрите также:
Комментарии
Здесь еще никто не оставил комментарий
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]