private bool TryGetSpriteUsageData(GameObject instance, int instanceID, string usagePath, out SpriteUseData spriteUseData) { int usagesCount = usages.Count; for (int i = 0; i < usagesCount; i++) { spriteUseData = usages[i]; string prefabGUID = string.Empty; if (PrefabUtility.IsPartOfAnyPrefab(instance)) { prefabGUID = AssetDatabase.AssetPathToGUID(PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(instance)); } if (spriteUseData.InstanceID == instanceID || spriteUseData.HierarchyPaths.Contains(usagePath) || String.Equals(prefabGUID, spriteUseData.NearestPrefabGUID, StringComparison.Ordinal)) { return(true); } } spriteUseData = null; return(false); }
public void ReportUse(GameObject instance, Vector3?size) { string usagePath = instance.transform.GetPath(); SpriteUseData spriteUsageData = GetOrCreateSpriteUsageData(instance, usagePath); Scene instanceScene = instance.scene; ReportScene(instanceScene); spriteUsageData.ReportPath(usagePath, instanceScene); ReportSize(size); }
private SpriteUseData GetOrCreateSpriteUsageData(GameObject instance, string usagePath) { int instanceID = instance.GetInstanceID(); if (TryGetSpriteUsageData(instance, instanceID, usagePath, out SpriteUseData spriteUseData)) { return(spriteUseData); } spriteUseData = new SpriteUseData(instance, instanceID, usagePath); usages.Add(spriteUseData); SpriteAuditorUtility.SetResultViewDirty(); return(spriteUseData); }
protected void DrawSpriteReferencesPath(SpriteData spriteData) { EditorGUILayout.LabelField("Usages", EditorStyles.boldLabel); EditorGUI.indentLevel++; for (int i = 0; i < spriteData.Usages.Count; i++) { SpriteUseData spriteUseData = spriteData.Usages[i]; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(spriteUseData.DisplayFirstPath); if (GUILayout.Button("Select", EditorStyles.miniButton)) { TrySelect(spriteUseData); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; }
private void TrySelect(SpriteUseData spriteUseData) { if (!string.IsNullOrEmpty(spriteUseData.NearestPrefabGUID)) { if (!Application.isPlaying) { GameObject prefabInstance = PrefabUtility.LoadPrefabContents(AssetDatabase.GUIDToAssetPath(spriteUseData.NearestPrefabGUID)); } } else { string[] paths = spriteUseData.FirstPath.Split(new[] { SpriteUseData.PATH_SEPARATOR }, StringSplitOptions.RemoveEmptyEntries); if (paths.Length != 2) { return; } string scenePath = paths[0]; if (!string.IsNullOrEmpty(scenePath)) { if (!scenePath.Contains("DontDestroyOnLoad")) { if (!Application.isPlaying) { EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Additive); } } } GameObject gameObject = GameObject.Find(paths[1]); if (gameObject == null) { return; } Selection.SetActiveObjectWithContext(gameObject, null); } }