From 811527ae24f0ef5948957c113060ec4ccc8eb485 Mon Sep 17 00:00:00 2001 From: zhang hongbo Date: Tue, 3 Feb 2026 11:36:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=8E=E6=9C=AF=E5=B7=A5=E5=85=B7=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=88=B0submodule=E4=B8=8B=E5=8F=AF=E4=BB=A5=E7=BB=99?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Editor/Art_Tools.meta | 8 - .../Art_Tools/ArtResourceConfigEditor.cs | 1981 ----------------- .../Art_Tools/ArtResourceConfigEditor.cs.meta | 11 - .../Editor/Art_Tools/ArtResourceLoadTest.cs | 226 -- .../Art_Tools/ArtResourceLoadTest.cs.meta | 11 - .../Editor/Art_Tools/ArtResourcePathFiller.cs | 296 --- .../Art_Tools/ArtResourcePathFiller.cs.meta | 11 - .../Art_Tools/BatchCreateSceneResources.cs | 288 --- .../BatchCreateSceneResources.cs.meta | 11 - .../Art_Tools/BatchImportSceneSprites.cs | 499 ----- .../Art_Tools/BatchImportSceneSprites.cs.meta | 11 - .../Art_Tools/LoadMethodComparisonTest.cs | 131 -- .../LoadMethodComparisonTest.cs.meta | 11 - Assets/Scenes/Decorate 1.unity | 562 ++--- ProjectSettings/SceneTemplateSettings.json | 121 + 15 files changed, 402 insertions(+), 3776 deletions(-) delete mode 100644 Assets/Editor/Art_Tools.meta delete mode 100644 Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs delete mode 100644 Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs.meta delete mode 100644 Assets/Editor/Art_Tools/ArtResourceLoadTest.cs delete mode 100644 Assets/Editor/Art_Tools/ArtResourceLoadTest.cs.meta delete mode 100644 Assets/Editor/Art_Tools/ArtResourcePathFiller.cs delete mode 100644 Assets/Editor/Art_Tools/ArtResourcePathFiller.cs.meta delete mode 100644 Assets/Editor/Art_Tools/BatchCreateSceneResources.cs delete mode 100644 Assets/Editor/Art_Tools/BatchCreateSceneResources.cs.meta delete mode 100644 Assets/Editor/Art_Tools/BatchImportSceneSprites.cs delete mode 100644 Assets/Editor/Art_Tools/BatchImportSceneSprites.cs.meta delete mode 100644 Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs delete mode 100644 Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs.meta create mode 100644 ProjectSettings/SceneTemplateSettings.json diff --git a/Assets/Editor/Art_Tools.meta b/Assets/Editor/Art_Tools.meta deleted file mode 100644 index 1da44a3..0000000 --- a/Assets/Editor/Art_Tools.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e7a5ac633e81c834e9838be40437acec -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs b/Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs deleted file mode 100644 index c0ca3af..0000000 --- a/Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs +++ /dev/null @@ -1,1981 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Collections.Generic; -using System.Linq; -using System.IO; -using ArtResource; -using Spine.Unity; -using UnityEngine.U2D; - -namespace EditorArt_Tools -{ - /// - /// 美术资源配置编辑器 - /// 提供三栏布局:配置表预览、Item导航、详细编辑 - /// - public class ArtResourceConfigEditor : EditorWindow - { - private const string SO_ROOT_PATH = "Assets/Art_SubModule/Art_SO"; - private const string JSON_ROOT_PATH = "Assets/Art_SubModule/Art_Json"; - - // ===== 数据 ===== - private List allTables = new List(); - private ArtTableSO selectedTable; - private ArtItemData selectedItem; - private Dictionary folderFoldouts = new Dictionary(); - private Dictionary itemFoldouts = new Dictionary(); - - // 暂存区(用于编辑但未保存的数据)- 完全独立的数据副本 - private List tempItemsList = new List(); - private new bool hasUnsavedChanges = false; - - // ID编辑临时缓存 - private Dictionary editingIdStrings = new Dictionary(); - private Dictionary originalIds = new Dictionary(); - - // 用于第二栏跳转到第三栏 - private int scrollToItemId = -1; - - // 当前正在播放Spine动画的Item ID - private int currentPlayingSpineItemId = -1; - - // ===== UI滚动 ===== - private Vector2 scrollTableList; - private Vector2 scrollItemNav; - private Vector2 scrollEditArea; - - // ===== Spine预览 ===== - private object spinePreviewInstance; - private System.Type spinePreviewType; - - // ===== Sprite预览缓存 ===== - private Dictionary spriteAtlasCache = new Dictionary(); - - private struct SpriteAtlasInfo - { - public SpriteAtlas atlas; - public string atlasPath; - } - - [MenuItem("美术工具/美术资源配置")] - public static void ShowWindow() - { - var window = GetWindow("美术资源配置"); - window.minSize = new Vector2(1600, 800); - window.Show(); - } - - [MenuItem("美术工具/路径管理/修复丢失的引用")] - public static void FixMissingReferences() - { - FixAllMissingReferences(); - } - - [MenuItem("美术工具/路径管理/清理SO丢失文件")] - public static void CleanupMissingItems() - { - CleanupAllMissingItems(); - } - - private void OnEnable() - { - RefreshTableList(); - InitializeSpinePreview(); - - AssemblyReloadEvents.beforeAssemblyReload -= OnBeforeAssemblyReload; - AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload; - } - - private void OnDisable() - { - CleanupSpinePreview(); - AssemblyReloadEvents.beforeAssemblyReload -= OnBeforeAssemblyReload; - - // 检查是否有未保存的更改 - if (hasUnsavedChanges) - { - if (EditorUtility.DisplayDialog("未保存的更改", - "您有未保存的更改,是否保存?", - "保存", "放弃")) - { - SaveCurrentTable(); - } - } - } - - private void OnDestroy() - { - CleanupSpinePreview(); - } - - #region Spine预览初始化和清理 - - private void InitializeSpinePreview() - { - try - { - var assembly = typeof(Spine.Unity.Editor.SkeletonDataAssetInspector).Assembly; - spinePreviewType = assembly.GetType("Spine.Unity.Editor.SkeletonInspectorPreview"); - - if (spinePreviewType != null) - { - spinePreviewInstance = System.Activator.CreateInstance(spinePreviewType); - EditorApplication.update -= HandleSpinePreviewUpdate; - EditorApplication.update += HandleSpinePreviewUpdate; - } - } - catch (System.Exception e) - { - Debug.LogWarning($"初始化Spine预览失败: {e.Message}"); - } - } - - private void CleanupSpinePreview() - { - EditorApplication.update -= HandleSpinePreviewUpdate; - - if (spinePreviewInstance != null && spinePreviewType != null) - { - try - { - var clearMethod = spinePreviewType.GetMethod("Clear"); - if (clearMethod != null) - { - clearMethod.Invoke(spinePreviewInstance, null); - } - - var cleanupMethod = spinePreviewType.GetMethod("Cleanup"); - if (cleanupMethod != null) - { - cleanupMethod.Invoke(spinePreviewInstance, null); - } - } - catch (System.Exception e) - { - Debug.LogWarning($"清理Spine预览时出错: {e.Message}"); - } - - spinePreviewInstance = null; - } - } - - private void HandleSpinePreviewUpdate() - { - if (spinePreviewInstance != null && spinePreviewType != null) - { - var updateMethod = spinePreviewType.GetMethod("HandleEditorUpdate"); - if (updateMethod != null) - { - updateMethod.Invoke(spinePreviewInstance, null); - } - } - } - - private void OnBeforeAssemblyReload() - { - CleanupSpinePreview(); - } - - #endregion - - #region 主界面绘制 - - private void OnGUI() - { - DrawToolbar(); - EditorGUILayout.Space(5); - - EditorGUILayout.BeginHorizontal(); - - // 第一栏:配置表预览(分级显示) - DrawTableListPanel(); - - // 第二栏:Item导航 - DrawItemNavigatorPanel(); - - // 第三栏:详细编辑 - DrawEditPanel(); - - EditorGUILayout.EndHorizontal(); - } - - private void DrawToolbar() - { - EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); - - if (GUILayout.Button("刷新", EditorStyles.toolbarButton, GUILayout.Width(60))) - { - RefreshTableList(); - } - - if (GUILayout.Button("新建配置表", EditorStyles.toolbarButton, GUILayout.Width(100))) - { - CreateNewTable(); - } - - GUILayout.FlexibleSpace(); - - // 未保存提示 - if (hasUnsavedChanges) - { - GUI.color = Color.yellow; - GUILayout.Label("● 有未保存的更改", EditorStyles.boldLabel); - GUI.color = Color.white; - } - - if (selectedTable != null) - { - EditorGUILayout.LabelField($"当前表: {selectedTable.TableName}", EditorStyles.boldLabel); - - if (GUILayout.Button("保存", EditorStyles.toolbarButton, GUILayout.Width(60))) - { - SaveCurrentTable(); - } - - GUI.backgroundColor = Color.red; - if (GUILayout.Button("删除配置表", EditorStyles.toolbarButton, GUILayout.Width(80))) - { - DeleteCurrentTable(); - } - GUI.backgroundColor = Color.white; - } - - EditorGUILayout.EndHorizontal(); - } - - #endregion - - #region 第一栏:配置表预览(分级显示) - - private void DrawTableListPanel() - { - EditorGUILayout.BeginVertical("box", GUILayout.Width(320)); - EditorGUILayout.LabelField("配置表列表", EditorStyles.boldLabel); - - scrollTableList = EditorGUILayout.BeginScrollView(scrollTableList); - - if (allTables != null && allTables.Count > 0) - { - DrawFolderHierarchy(); - } - else - { - EditorGUILayout.HelpBox("暂无配置表\n点击上方「新建配置表」创建", MessageType.Info); - } - - EditorGUILayout.EndScrollView(); - EditorGUILayout.EndVertical(); - } - - private void DrawFolderHierarchy() - { - // 按文件夹分组 - var tablesByFolder = allTables - .Select(table => new - { - Table = table, - Path = AssetDatabase.GetAssetPath(table), - Folder = GetRelativeFolder(AssetDatabase.GetAssetPath(table)) - }) - .GroupBy(x => x.Folder) - .OrderBy(g => g.Key); - - foreach (var folderGroup in tablesByFolder) - { - string folderName = folderGroup.Key; - if (!folderFoldouts.ContainsKey(folderName)) - { - folderFoldouts[folderName] = true; - } - - // 绘制文件夹 - EditorGUILayout.BeginHorizontal(); - folderFoldouts[folderName] = EditorGUILayout.Foldout( - folderFoldouts[folderName], - $"📁 {folderName} ({folderGroup.Count()})", - true, - EditorStyles.foldoutHeader); - EditorGUILayout.EndHorizontal(); - - // 绘制该文件夹下的配置表 - if (folderFoldouts[folderName]) - { - EditorGUI.indentLevel++; - foreach (var item in folderGroup) - { - DrawTableButton(item.Table); - } - EditorGUI.indentLevel--; - } - - EditorGUILayout.Space(3); - } - } - - private void DrawTableButton(ArtTableSO table) - { - bool isSelected = table == selectedTable; - - Color originalBg = GUI.backgroundColor; - if (isSelected) - { - GUI.backgroundColor = new Color(0.3f, 0.6f, 1f); - } - - EditorGUILayout.BeginVertical("box"); - - if (GUILayout.Button($"📄 {table.TableName}", GUILayout.Height(30))) - { - SelectTable(table); - } - - GUI.backgroundColor = originalBg; - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField($"ID: {table.TableId}", EditorStyles.miniLabel, GUILayout.Width(80)); - EditorGUILayout.LabelField($"资源数: {table.Items.Count}", EditorStyles.miniLabel); - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.EndVertical(); - } - - private string GetRelativeFolder(string assetPath) - { - string relativePath = assetPath.Replace(SO_ROOT_PATH + "/", ""); - int lastSlash = relativePath.LastIndexOf('/'); - if (lastSlash >= 0) - { - return relativePath.Substring(0, lastSlash); - } - return "根目录"; - } - - #endregion - - #region 第二栏:Item导航 - - private void DrawItemNavigatorPanel() - { - EditorGUILayout.BeginVertical("box", GUILayout.Width(280)); - - if (selectedTable == null) - { - EditorGUILayout.HelpBox("请从左侧选择一个配置表", MessageType.Info); - EditorGUILayout.EndVertical(); - return; - } - - EditorGUILayout.LabelField($"{selectedTable.TableName} - 资源项", EditorStyles.boldLabel); - - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("+ 添加新项", GUILayout.Height(25))) - { - AddNewItem(); - } - if (GUILayout.Button("📁 批量导入Sprite", GUILayout.Height(25))) - { - BatchImportSprites(); - } - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.Space(5); - - scrollItemNav = EditorGUILayout.BeginScrollView(scrollItemNav); - - if (tempItemsList.Count == 0) - { - EditorGUILayout.HelpBox("暂无资源项\n点击上方「+ 添加新项」创建", MessageType.Info); - } - else - { - for (int i = 0; i < tempItemsList.Count; i++) - { - var item = tempItemsList[i]; - DrawItemNavigatorButton(item, i); - } - } - - EditorGUILayout.EndScrollView(); - EditorGUILayout.EndVertical(); - } - - private void DrawItemNavigatorButton(ArtItemData item, int index) - { - bool isSelected = item == selectedItem; - - Color originalBg = GUI.backgroundColor; - if (isSelected) - { - GUI.backgroundColor = new Color(0.3f, 0.8f, 0.3f); - } - - EditorGUILayout.BeginVertical("box"); - - EditorGUILayout.BeginHorizontal(); - - // 小缩略图 - if (item.Sprite != null) - { - Rect previewRect = GUILayoutUtility.GetRect(40, 40, GUILayout.ExpandWidth(false)); - EditorGUI.DrawRect(previewRect, new Color(0.2f, 0.2f, 0.2f)); - DrawSpritePreview(previewRect, item.Sprite); - } - else if (item.SpineAsset != null) - { - Rect previewRect = GUILayoutUtility.GetRect(40, 40, GUILayout.ExpandWidth(false)); - EditorGUI.DrawRect(previewRect, new Color(0.2f, 0.2f, 0.2f)); - GUI.Label(previewRect, "🦴", new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleCenter, fontSize = 24 }); - } - else - { - GUILayout.Space(40); - } - - EditorGUILayout.BeginVertical(); - if (GUILayout.Button($"{index + 1}. {item.Name}", GUILayout.Height(40))) - { - SelectItem(item); - } - EditorGUILayout.EndVertical(); - - EditorGUILayout.EndHorizontal(); - - // 显示基本信息 - EditorGUILayout.LabelField($"ID: {item.Id}", EditorStyles.miniLabel); - if (!string.IsNullOrEmpty(item.Desc)) - { - EditorGUILayout.LabelField($"描述: {item.Desc}", EditorStyles.miniLabel); - } - - EditorGUILayout.EndVertical(); - - GUI.backgroundColor = originalBg; - } - - #endregion - - #region 第三栏:详细编辑(显示所有Item) - - private void DrawEditPanel() - { - EditorGUILayout.BeginVertical("box", GUILayout.ExpandWidth(true)); - - if (selectedTable == null) - { - EditorGUILayout.HelpBox("请从左侧选择一个配置表", MessageType.Info); - EditorGUILayout.EndVertical(); - return; - } - - // 表格信息编辑区域 - EditorGUILayout.BeginVertical("box"); - EditorGUILayout.LabelField("配置表信息", EditorStyles.boldLabel); - - EditorGUI.BeginChangeCheck(); - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("表格ID", GUILayout.Width(80)); - selectedTable.TableId = EditorGUILayout.IntField(selectedTable.TableId); - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("表格名称", GUILayout.Width(80)); - selectedTable.TableName = EditorGUILayout.TextField(selectedTable.TableName); - EditorGUILayout.EndHorizontal(); - - if (EditorGUI.EndChangeCheck()) - { - MarkAsChanged(); - } - EditorGUILayout.EndVertical(); - - EditorGUILayout.Space(5); - - scrollEditArea = EditorGUILayout.BeginScrollView(scrollEditArea); - - if (tempItemsList.Count == 0) - { - EditorGUILayout.HelpBox("暂无资源项\n点击中间栏上方「+ 添加新项」创建", MessageType.Info); - } - else - { - // 显示所有Item - for (int i = 0; i < tempItemsList.Count; i++) - { - var item = tempItemsList[i]; - - // 如果需要跳转到这个Item - if (scrollToItemId == item.Id) - { - // 展开这个Item - itemFoldouts[item.Id] = true; - - // 计算滚动位置:前面的item都是折叠状态,高度约60像素 - float collapsedItemHeight = 44f; // 折叠状态的实际高度(只有标题行) - scrollEditArea.y = Mathf.Max(0, i * collapsedItemHeight); - - // 重置跳转标记 - scrollToItemId = -1; - - // 让GUI重绘以应用折叠状态 - Repaint(); - } - - DrawItemEditSection(item, i); - EditorGUILayout.Space(10); - } - } - - EditorGUILayout.EndScrollView(); - EditorGUILayout.EndVertical(); - } - - private void DrawItemEditSection(ArtItemData item, int index) - { - // 整个Item的大面板 - bool isSelected = item == selectedItem; - Color originalBg = GUI.backgroundColor; - - if (isSelected) - { - GUI.backgroundColor = new Color(0.4f, 0.7f, 1f, 0.3f); - } - - EditorGUILayout.BeginVertical("box"); - GUI.backgroundColor = originalBg; - - // 标题行 - EditorGUILayout.BeginHorizontal(); - - string title = $"{index + 1}. {item.Name} (ID: {item.Id})"; - if (!itemFoldouts.ContainsKey(item.Id)) - { - itemFoldouts[item.Id] = false; - } - - itemFoldouts[item.Id] = EditorGUILayout.Foldout( - itemFoldouts[item.Id], - title, - true, - EditorStyles.foldoutHeader); - - GUILayout.FlexibleSpace(); - - GUI.backgroundColor = Color.red; - if (GUILayout.Button("删除", GUILayout.Width(60), GUILayout.Height(20))) - { - if (EditorUtility.DisplayDialog("确认删除", - $"确定要删除资源项「{item.Name}」吗?\n此操作不可恢复!", - "删除", "取消")) - { - DeleteItem(item); - } - } - GUI.backgroundColor = Color.white; - - EditorGUILayout.EndHorizontal(); - - // 展开内容 - if (itemFoldouts[item.Id]) - { - EditorGUI.indentLevel++; - - // 基本信息 - DrawBasicInfoSection(item); - - EditorGUILayout.Space(5); - - // Sprite资源 - DrawSpriteSection(item); - - EditorGUILayout.Space(5); - - // Spine资源 - DrawSpineSection(item); - - EditorGUI.indentLevel--; - } - - EditorGUILayout.EndVertical(); - } - - private void DrawBasicInfoSection(ArtItemData editingData) - { - EditorGUILayout.BeginVertical("box"); - - EditorGUI.BeginChangeCheck(); - - EditorGUILayout.LabelField("资源ID", EditorStyles.boldLabel); - - // 初始化编辑字符串 - int itemHashCode = editingData.GetHashCode(); - if (!editingIdStrings.ContainsKey(itemHashCode)) - { - editingIdStrings[itemHashCode] = editingData.Id.ToString(); - originalIds[itemHashCode] = editingData.Id; - } - - // 使用TextField进行编辑 - GUI.SetNextControlName($"IdField_{itemHashCode}"); - string newIdString = EditorGUILayout.TextField(editingIdStrings[itemHashCode]); - - // 如果字符串改变,更新缓存 - if (newIdString != editingIdStrings[itemHashCode]) - { - editingIdStrings[itemHashCode] = newIdString; - } - - // 检查是否失去焦点 - string currentFocus = GUI.GetNameOfFocusedControl(); - if (currentFocus != $"IdField_{itemHashCode}" && editingIdStrings.ContainsKey(itemHashCode)) - { - // 尝试解析ID - if (int.TryParse(editingIdStrings[itemHashCode], out int newId)) - { - // 检查是否有重复ID(排除自己) - bool hasDuplicate = tempItemsList.Any(item => item != editingData && item.Id == newId); - - if (hasDuplicate) - { - // 有重复,恢复原值并提示 - EditorUtility.DisplayDialog("ID重复", - $"ID {newId} 已被其他资源项使用,请使用不同的ID。", - "确定"); - editingIdStrings[itemHashCode] = originalIds[itemHashCode].ToString(); - editingData.Id = originalIds[itemHashCode]; - } - else if (newId != editingData.Id) - { - // 没有重复,更新ID - int oldId = editingData.Id; - editingData.Id = newId; - originalIds[itemHashCode] = newId; - - // 更新itemFoldouts字典的key - if (itemFoldouts.ContainsKey(oldId)) - { - bool wasFoldout = itemFoldouts[oldId]; - itemFoldouts.Remove(oldId); - itemFoldouts[newId] = wasFoldout; - } - } - } - else - { - // 解析失败,恢复原值 - editingIdStrings[itemHashCode] = originalIds[itemHashCode].ToString(); - editingData.Id = originalIds[itemHashCode]; - } - } - - EditorGUILayout.Space(5); - - EditorGUILayout.LabelField("资源名称", EditorStyles.boldLabel); - editingData.Name = EditorGUILayout.TextField(editingData.Name); - - EditorGUILayout.Space(5); - - EditorGUILayout.LabelField("资源描述", EditorStyles.boldLabel); - editingData.Desc = EditorGUILayout.TextArea(editingData.Desc, GUILayout.Height(60)); - - if (EditorGUI.EndChangeCheck()) - { - MarkAsChanged(); - } - - EditorGUILayout.EndVertical(); - } - - private void DrawSpriteSection(ArtItemData editingData) - { - EditorGUILayout.LabelField("Sprite 图片资源", EditorStyles.boldLabel); - EditorGUILayout.BeginVertical("box"); - - EditorGUI.BeginChangeCheck(); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Sprite引用", GUILayout.Width(80)); - var newSprite = (Sprite)EditorGUILayout.ObjectField( - editingData.Sprite, - typeof(Sprite), - false); - EditorGUILayout.EndHorizontal(); - - if (EditorGUI.EndChangeCheck()) - { - editingData.Sprite = newSprite; - MarkAsChanged(); - } - - // 预览 - if (editingData.Sprite != null) - { - EditorGUILayout.Space(10); - EditorGUILayout.LabelField("预览", EditorStyles.boldLabel); - - Rect previewRect = GUILayoutUtility.GetRect(150, 150, GUILayout.Width(150), GUILayout.Height(150)); - EditorGUI.DrawRect(previewRect, new Color(0.2f, 0.2f, 0.2f)); - DrawSpritePreview(previewRect, editingData.Sprite); - - // 显示信息 - var atlas = GetSpriteAtlas(editingData.Sprite); - if (atlas.HasValue) - { - EditorGUILayout.LabelField($"图集: {atlas.Value.atlas.name}"); - } - - EditorGUILayout.LabelField($"尺寸: {editingData.Sprite.rect.width} x {editingData.Sprite.rect.height}"); - } - - EditorGUILayout.EndVertical(); - } - - private void DrawSpineSection(ArtItemData editingData) - { - EditorGUILayout.LabelField("Spine 骨骼资源", EditorStyles.boldLabel); - EditorGUILayout.BeginVertical("box"); - - EditorGUI.BeginChangeCheck(); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("SkeletonDataAsset引用", GUILayout.Width(150)); - var newSpineAsset = (SkeletonDataAsset)EditorGUILayout.ObjectField( - editingData.SpineAsset, - typeof(SkeletonDataAsset), - false); - EditorGUILayout.EndHorizontal(); - - bool spineAssetChanged = EditorGUI.EndChangeCheck(); - - if (spineAssetChanged) - { - editingData.SpineAsset = newSpineAsset; - - // 自动选择第一个动画 - if (newSpineAsset != null) - { - var animations = GetSpineAnimations(newSpineAsset); - if (animations != null && animations.Length > 0) - { - editingData.SpineAnimName = animations[0]; - // 暂停其他正在播放的动画 - StopAllSpineAnimations(); - currentPlayingSpineItemId = editingData.Id; - } - } - - MarkAsChanged(); - } - - if (editingData.SpineAsset != null) - { - EditorGUILayout.Space(5); - - // 获取所有动画名称 - var animations = GetSpineAnimations(editingData.SpineAsset); - if (animations != null && animations.Length > 0) - { - EditorGUI.BeginChangeCheck(); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("动画名称", GUILayout.Width(80)); - - int currentIndex = System.Array.IndexOf(animations, editingData.SpineAnimName); - if (currentIndex < 0) currentIndex = 0; - - int newIndex = EditorGUILayout.Popup(currentIndex, animations); - EditorGUILayout.EndHorizontal(); - - if (EditorGUI.EndChangeCheck()) - { - editingData.SpineAnimName = animations[newIndex]; - MarkAsChanged(); - - // 切换动画时自动播放 - StopAllSpineAnimations(); - currentPlayingSpineItemId = editingData.Id; - PlaySpineAnimation(editingData.SpineAsset, editingData.SpineAnimName); - } - } - else - { - EditorGUILayout.HelpBox("该Spine资源没有动画", MessageType.Warning); - } - - // 预览 - EditorGUILayout.Space(10); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("预览", EditorStyles.boldLabel); - - bool isPlaying = (currentPlayingSpineItemId == editingData.Id); - GUI.backgroundColor = isPlaying ? Color.green : Color.white; - if (GUILayout.Button(isPlaying ? "⏸ 暂停" : "▶ 播放", GUILayout.Width(80))) - { - if (isPlaying) - { - currentPlayingSpineItemId = -1; - StopSpineAnimation(); - } - else - { - StopAllSpineAnimations(); - currentPlayingSpineItemId = editingData.Id; - PlaySpineAnimation(editingData.SpineAsset, editingData.SpineAnimName); - } - } - GUI.backgroundColor = Color.white; - EditorGUILayout.EndHorizontal(); - - Rect previewRect = GUILayoutUtility.GetRect(150, 150, GUILayout.Width(150), GUILayout.Height(150)); - DrawSpinePreview(previewRect, editingData.SpineAsset, editingData.SpineAnimName, isPlaying); - } - - EditorGUILayout.EndVertical(); - } - - #endregion - - #region 数据操作 - - // 找到所有的SO文件展示在列表中 - private void RefreshTableList() - { - allTables.Clear(); - - // 搜索所有ScriptableObject,然后手动过滤ArtTableSO类型 - string[] allSOGuids = AssetDatabase.FindAssets("t:ScriptableObject"); - int checkedCount = 0; - - foreach (string guid in allSOGuids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - - // 只检查在SO_ROOT_PATH路径下的文件 - if (path.StartsWith(SO_ROOT_PATH)) - { - checkedCount++; - var asset = AssetDatabase.LoadAssetAtPath(path); - - // 检查是否是ArtTableSO类型 - if (asset is ArtTableSO table) - { - allTables.Add(table); - // Debug.Log($"[ArtResourceConfig] 找到配置表: {table.TableName} - {path}"); - } - } - } - - allTables = allTables.OrderBy(t => t.TableName).ToList(); - // Debug.Log($"[ArtResourceConfig] 在 {SO_ROOT_PATH} 下检查了 {checkedCount} 个SO文件,找到 {allTables.Count} 个配置表"); - - // 清除缓存 - tempItemsList.Clear(); - hasUnsavedChanges = false; - - Repaint(); - } - - private void SelectTable(ArtTableSO table) - { - // 如果有未保存的更改,提示用户 - if (hasUnsavedChanges && selectedTable != null && selectedTable != table) - { - if (!EditorUtility.DisplayDialog("切换配置表", - "当前有未保存的更改,切换将丢失这些更改。\n确定要切换吗?", - "切换", "取消")) - { - return; - } - } - - selectedTable = table; - selectedItem = null; - hasUnsavedChanges = false; - itemFoldouts.Clear(); - - // 加载数据到暂存区 - LoadToTempData(); - } - - private void LoadToTempData() - { - tempItemsList.Clear(); - - if (selectedTable == null) return; - - // 创建完全独立的副本 - foreach (var item in selectedTable.Items) - { - var copy = new ArtItemData - { - Id = item.Id, - Name = item.Name, - Desc = item.Desc, - Sprite = item.Sprite, - SpineAsset = item.SpineAsset, - SpineAnimName = item.SpineAnimName - }; - tempItemsList.Add(copy); - } - } - - private void SelectItem(ArtItemData item) - { - selectedItem = item; - - // 清除当前焦点,避免显示旧的编辑内容 - GUI.FocusControl(null); - GUIUtility.keyboardControl = 0; - EditorGUIUtility.editingTextField = false; - - // 折叠所有其他项,只展开当前项 - foreach (var tempItem in tempItemsList) - { - itemFoldouts[tempItem.Id] = (tempItem == item); - } - - // 设置跳转标记,让第三栏滚动到这个Item - scrollToItemId = item.Id; - - // 如果有Spine资源,自动播放动画 - if (item.SpineAsset != null && !string.IsNullOrEmpty(item.SpineAnimName)) - { - StopAllSpineAnimations(); - currentPlayingSpineItemId = item.Id; - PlaySpineAnimation(item.SpineAsset, item.SpineAnimName); - } - else - { - // 如果没有Spine资源,停止所有播放 - StopAllSpineAnimations(); - } - - Repaint(); - } - - private void MarkAsChanged() - { - hasUnsavedChanges = true; - } - - private void CreateNewTable() - { - string path = EditorUtility.SaveFilePanelInProject( - "创建新配置表", - "NewArtTable", - "asset", - "请选择配置表保存位置", - SO_ROOT_PATH); - - if (string.IsNullOrEmpty(path)) - { - return; - } - - // 检查是否直接放在Art_SO根目录 - string relativePath = path.Replace(SO_ROOT_PATH + "/", ""); - if (!relativePath.Contains("/")) - { - EditorUtility.DisplayDialog("路径错误", - "配置表不能直接放在 Art_SO 根目录下!\n请在 Art_SO 下创建子文件夹,然后将配置表放在子文件夹中。", - "确定"); - return; - } - - var newTable = ScriptableObject.CreateInstance(); - newTable.TableName = Path.GetFileNameWithoutExtension(path); - newTable.TableId = GenerateUniqueTableId(); - newTable.Items = new List(); - - AssetDatabase.CreateAsset(newTable, path); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - - // 同步创建JSON文件 - SyncToJson(newTable); - - // 更新manifest文件 - UpdateManifest(); - - RefreshTableList(); - SelectTable(newTable); - - Debug.Log($"创建配置表成功: {path}"); - } - - private int GenerateUniqueTableId() - { - if (allTables.Count == 0) return 1; - return allTables.Max(t => t.TableId) + 1; - } - - private void AddNewItem() - { - if (selectedTable == null) return; - - int newId = tempItemsList.Count > 0 - ? tempItemsList.Max(i => i.Id) + 1 - : 1; - - var newItem = new ArtItemData - { - Id = newId, - Name = $"新资源项_{newId}", - Desc = "" - }; - - tempItemsList.Add(newItem); - hasUnsavedChanges = true; - - SelectItem(newItem); - } - - private void DeleteItem(ArtItemData item) - { - if (item == null) return; - - tempItemsList.Remove(item); - hasUnsavedChanges = true; - - if (selectedItem == item) - { - selectedItem = tempItemsList.FirstOrDefault(); - } - - Repaint(); - } - - private void DeleteCurrentTable() - { - if (selectedTable == null) return; - - if (!EditorUtility.DisplayDialog("确认删除", - $"确定要删除配置表「{selectedTable.TableName}」吗?\n这将同时删除SO文件和对应的JSON文件!\n此操作不可恢复!", - "删除", "取消")) - { - return; - } - - string tableName = selectedTable.TableName; - string soPath = AssetDatabase.GetAssetPath(selectedTable); - - // 计算JSON路径 - string relativePath = soPath.Replace(SO_ROOT_PATH, "").Replace(".asset", ".json"); - string jsonPath = JSON_ROOT_PATH + relativePath; - - // 删除SO文件 - AssetDatabase.DeleteAsset(soPath); - - // 删除JSON文件(如果存在) - if (File.Exists(jsonPath)) - { - File.Delete(jsonPath); - // 同时删除.meta文件 - if (File.Exists(jsonPath + ".meta")) - { - File.Delete(jsonPath + ".meta"); - } - } - - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - - // 更新manifest文件 - UpdateManifest(); - - Debug.Log($"已删除配置表: {tableName}"); - Debug.Log($"SO路径: {soPath}"); - if (File.Exists(jsonPath)) - { - Debug.Log($"JSON路径: {jsonPath}"); - } - - // 清空选择 - selectedTable = null; - selectedItem = null; - tempItemsList.Clear(); - hasUnsavedChanges = false; - - // 刷新列表 - RefreshTableList(); - - EditorUtility.DisplayDialog("删除成功", $"配置表「{tableName}」已删除", "确定"); - } - - private void BatchImportSprites() - { - if (selectedTable == null) - { - EditorUtility.DisplayDialog("错误", "请先选择一个配置表", "确定"); - return; - } - - string folderPath = EditorUtility.OpenFolderPanel("选择Sprite文件夹", "Assets", ""); - if (string.IsNullOrEmpty(folderPath)) - { - return; - } - - // 转换为相对路径 - if (!folderPath.StartsWith(Application.dataPath)) - { - EditorUtility.DisplayDialog("错误", "请选择项目内的文件夹", "确定"); - return; - } - - string relativePath = "Assets" + folderPath.Substring(Application.dataPath.Length); - - // 查找所有Sprite - string[] guids = AssetDatabase.FindAssets("t:Sprite", new[] { relativePath }); - - if (guids.Length == 0) - { - EditorUtility.DisplayDialog("提示", "该文件夹中没有找到Sprite资源", "确定"); - return; - } - - int startId = tempItemsList.Count > 0 ? tempItemsList.Max(i => i.Id) + 1 : 1; - int importCount = 0; - - foreach (string guid in guids) - { - string assetPath = AssetDatabase.GUIDToAssetPath(guid); - Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath); - - if (sprite != null) - { - var newItem = new ArtItemData - { - Id = startId + importCount, - Name = sprite.name, - Desc = "", - Sprite = sprite - }; - - tempItemsList.Add(newItem); - importCount++; - } - } - - if (importCount > 0) - { - hasUnsavedChanges = true; - EditorUtility.DisplayDialog("导入成功", - $"成功导入 {importCount} 个Sprite资源\n记得点击保存按钮!", - "确定"); - } - } - - private void SaveCurrentTable() - { - if (selectedTable == null) - { - EditorUtility.DisplayDialog("保存失败", "没有选中的配置表", "确定"); - return; - } - - // 检查表格ID和名称的唯一性 - foreach (var table in allTables) - { - if (table == selectedTable) continue; - - if (table.TableId == selectedTable.TableId) - { - EditorUtility.DisplayDialog("保存失败", - $"表格ID {selectedTable.TableId} 已被表格「{table.TableName}」使用!\n请使用不同的ID。", - "确定"); - return; - } - - if (table.TableName == selectedTable.TableName) - { - EditorUtility.DisplayDialog("保存失败", - $"表格名称「{selectedTable.TableName}」已被使用!\n请使用不同的名称。", - "确定"); - return; - } - } - - // 检查资源项名称的唯一性 - var nameGroups = tempItemsList.GroupBy(item => item.Name).Where(g => g.Count() > 1).ToList(); - if (nameGroups.Any()) - { - string duplicateNames = string.Join(", ", nameGroups.Select(g => $"'{g.Key}'")); - EditorUtility.DisplayDialog("保存失败", - $"资源项名称重复!\n以下名称出现了多次: {duplicateNames}\n请确保每个资源项的名称唯一。", - "确定"); - return; - } - - // 检查资源项ID的唯一性 - var idGroups = tempItemsList.GroupBy(item => item.Id).Where(g => g.Count() > 1).ToList(); - if (idGroups.Any()) - { - string duplicateIds = string.Join(", ", idGroups.Select(g => g.Key.ToString())); - EditorUtility.DisplayDialog("保存失败", - $"资源项ID重复!\n以下ID出现了多次: {duplicateIds}\n请确保每个资源项的ID唯一。", - "确定"); - return; - } - - // 检查是否有资源项既没有Sprite又没有Spine - var emptyItems = tempItemsList.Where(item => item.Sprite == null && item.SpineAsset == null).ToList(); - if (emptyItems.Any()) - { - string emptyItemNames = string.Join(", ", emptyItems.Select(item => $"'{item.Name}' (ID: {item.Id})")); - EditorUtility.DisplayDialog("保存失败", - $"以下资源项既没有Sprite也没有Spine资源!\n{emptyItemNames}\n请至少为每个资源项配置一种资源。", - "确定"); - return; - } - - // 清空原始列表 - selectedTable.Items.Clear(); - - // 将暂存区的数据复制到原始数据,同时更新路径 - foreach (var tempItem in tempItemsList) - { - var newItem = new ArtItemData - { - Id = tempItem.Id, - Name = tempItem.Name, - Desc = tempItem.Desc, - Sprite = tempItem.Sprite, - SpritePath = tempItem.Sprite != null ? AssetDatabase.GetAssetPath(tempItem.Sprite) : "", - SpineAsset = tempItem.SpineAsset, - SpineAssetPath = tempItem.SpineAsset != null ? AssetDatabase.GetAssetPath(tempItem.SpineAsset) : "", - SpineAnimName = tempItem.SpineAnimName - }; - selectedTable.Items.Add(newItem); - } - - // 保存SO - EditorUtility.SetDirty(selectedTable); - AssetDatabase.SaveAssets(); - - // 同步JSON - SyncToJson(selectedTable); - - // 更新manifest文件 - UpdateManifest(); - - hasUnsavedChanges = false; - - Debug.Log($"配置表保存成功: {selectedTable.TableName}"); - EditorUtility.DisplayDialog("保存成功", $"配置表「{selectedTable.TableName}」已保存\n共 {selectedTable.Items.Count} 项", "确定"); - } - - #endregion - - #region JSON同步 - - private void SyncToJson(ArtTableSO table) - { - string soPath = AssetDatabase.GetAssetPath(table); - string relativePath = soPath.Replace(SO_ROOT_PATH, "").Replace(".asset", ".json"); - string jsonPath = JSON_ROOT_PATH + relativePath; - - // 确保目录存在 - string directory = Path.GetDirectoryName(jsonPath); - if (!Directory.Exists(directory)) - { - Directory.CreateDirectory(directory); - } - - // 创建JSON数据 - var jsonData = new ArtTableJsonData - { - TableId = table.TableId, - TableName = table.TableName, - Items = table.Items.Select(item => new ArtItemJsonData - { - Id = item.Id, - Name = item.Name, - Desc = item.Desc, - SpritePath = item.Sprite != null ? AssetDatabase.GetAssetPath(item.Sprite) : "", - SpineAssetPath = item.SpineAsset != null ? AssetDatabase.GetAssetPath(item.SpineAsset) : "", - SpineAnimName = item.SpineAnimName - }).ToList() - }; - - string json = JsonUtility.ToJson(jsonData, true); - File.WriteAllText(jsonPath, json); - - AssetDatabase.Refresh(); - - Debug.Log($"JSON同步成功: {jsonPath}"); - } - - private void UpdateManifest() - { - const string MANIFEST_PATH = "Assets/Art_SubModule/Art_SO/art_table_manifest.json"; - - try - { - // 查找所有ArtTableSO文件 - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO", new[] { SO_ROOT_PATH }); - List tablePaths = new List(); - - foreach (string guid in guids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - if (!string.IsNullOrEmpty(path)) - { - tablePaths.Add(path); - } - } - - // 排序路径 - tablePaths.Sort(); - - // 创建或更新manifest - ArtTableManifest manifest; - - // 如果文件存在,读取现有的预加载配置 - if (File.Exists(MANIFEST_PATH)) - { - string existingJson = File.ReadAllText(MANIFEST_PATH); - manifest = JsonUtility.FromJson(existingJson); - - // 确保字段不为null - if (manifest == null) - { - manifest = new ArtTableManifest(); - } - if (manifest.preloadTableIds == null) - { - manifest.preloadTableIds = new int[0]; - } - } - else - { - // 创建新的manifest - manifest = new ArtTableManifest - { - preloadTableIds = new int[0] - }; - } - - // 更新路径列表 - manifest.tablePaths = tablePaths.ToArray(); - - // 清理预加载配置:移除已删除表的ID - // 获取所有当前存在的表的ID - List validTableIds = new List(); - foreach (string guid in guids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - var table = AssetDatabase.LoadAssetAtPath(path); - if (table != null) - { - validTableIds.Add(table.TableId); - } - } - - // 过滤掉已删除表的ID - if (manifest.preloadTableIds != null && manifest.preloadTableIds.Length > 0) - { - var cleanedPreloadIds = manifest.preloadTableIds.Where(id => validTableIds.Contains(id)).ToArray(); - int removedCount = manifest.preloadTableIds.Length - cleanedPreloadIds.Length; - - manifest.preloadTableIds = cleanedPreloadIds; - - if (removedCount > 0) - { - Debug.Log($"[ArtResourceConfigEditor] 从预加载配置中移除了 {removedCount} 个已删除表的ID"); - } - } - - // 序列化为JSON - string json = JsonUtility.ToJson(manifest, true); - - // 确保目录存在 - string directory = Path.GetDirectoryName(MANIFEST_PATH); - if (!Directory.Exists(directory)) - { - Directory.CreateDirectory(directory); - } - - // 写入文件 - File.WriteAllText(MANIFEST_PATH, json); - AssetDatabase.ImportAsset(MANIFEST_PATH); - - Debug.Log($"[ArtResourceConfigEditor] Manifest文件已更新: {MANIFEST_PATH}, 共 {tablePaths.Count} 个表"); - } - catch (System.Exception ex) - { - Debug.LogError($"[ArtResourceConfigEditor] 更新Manifest文件失败: {ex.Message}"); - } - } - - [System.Serializable] - public class ArtTableManifest - { - public string[] tablePaths; - public int[] preloadTableIds; - } - - [System.Serializable] - public class ArtTableJsonData - { - public int TableId; - public string TableName; - public List Items; - } - - [System.Serializable] - public class ArtItemJsonData - { - public int Id; - public string Name; - public string Desc; - public string SpritePath; - public string SpineAssetPath; - public string SpineAnimName; - } - - #endregion - - #region 预览功能 - - private void DrawSpritePreview(Rect rect, Sprite sprite) - { - if (sprite == null || sprite.texture == null) return; - - Rect texCoords = sprite.textureRect; - Texture2D tex = sprite.texture; - - Rect normalizedCoords = new Rect( - texCoords.x / tex.width, - texCoords.y / tex.height, - texCoords.width / tex.width, - texCoords.height / tex.height - ); - - // 计算适配矩形(保持长宽比) - float aspect = texCoords.width / texCoords.height; - Rect drawRect = rect; - if (aspect > 1f) - { - float height = drawRect.width / aspect; - drawRect.y += (drawRect.height - height) * 0.5f; - drawRect.height = height; - } - else - { - float width = drawRect.height * aspect; - drawRect.x += (drawRect.width - width) * 0.5f; - drawRect.width = width; - } - - GUI.DrawTextureWithTexCoords(drawRect, tex, normalizedCoords, true); - } - - private string[] GetSpineAnimations(SkeletonDataAsset spineAsset) - { - if (spineAsset == null || spineAsset.GetSkeletonData(false) == null) - return new string[0]; - - var skeletonData = spineAsset.GetSkeletonData(false); - var animations = skeletonData.Animations; - - if (animations == null || animations.Count == 0) - return new string[0]; - - string[] animNames = new string[animations.Count]; - for (int i = 0; i < animations.Count; i++) - { - animNames[i] = animations.Items[i].Name; - } - - return animNames; - } - - private void PlaySpineAnimation(SkeletonDataAsset spineAsset, string animName) - { - if (spineAsset == null || spinePreviewInstance == null || spinePreviewType == null) - return; - - try - { - // 先清理旧的预览 - var clearMethod = spinePreviewType.GetMethod("Clear"); - if (clearMethod != null) - { - clearMethod.Invoke(spinePreviewInstance, null); - } - - // 初始化预览(传入Repaint回调、SkeletonDataAsset和空字符串) - var initMethod = spinePreviewType.GetMethod("Initialize", new System.Type[] { typeof(System.Action), typeof(SkeletonDataAsset), typeof(string) }); - if (initMethod != null) - { - initMethod.Invoke(spinePreviewInstance, new object[] { new System.Action(Repaint), spineAsset, "" }); - - // 延迟设置动画,确保skeleton已完全初始化 - if (!string.IsNullOrEmpty(animName)) - { - EditorApplication.delayCall += () => - { - try - { - if (spinePreviewInstance != null && spinePreviewType != null) - { - var skeletonAnimField = spinePreviewType.GetField("skeletonAnimation", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); - if (skeletonAnimField != null) - { - var skeletonAnim = skeletonAnimField.GetValue(spinePreviewInstance) as SkeletonAnimation; - if (skeletonAnim != null && skeletonAnim.valid && skeletonAnim.AnimationState != null) - { - skeletonAnim.AnimationState.SetAnimation(0, animName, true); - } - } - } - } - catch { } - }; - } - } - - Repaint(); - } - catch (System.Exception e) - { - Debug.LogWarning($"播放Spine动画失败: {e.Message}"); - } - } - - private void StopSpineAnimation() - { - if (spinePreviewInstance == null || spinePreviewType == null) - return; - - try - { - var clearMethod = spinePreviewType.GetMethod("Clear"); - if (clearMethod != null) - { - clearMethod.Invoke(spinePreviewInstance, null); - } - - Repaint(); - } - catch (System.Exception e) - { - Debug.LogWarning($"停止Spine动画失败: {e.Message}"); - } - } - - private void StopAllSpineAnimations() - { - currentPlayingSpineItemId = -1; - StopSpineAnimation(); - } - - private void DrawSpinePreview(Rect rect, SkeletonDataAsset spineAsset, string animName, bool isPlaying) - { - if (spineAsset == null || spinePreviewInstance == null || spinePreviewType == null) - { - EditorGUI.HelpBox(rect, "Spine预览不可用", MessageType.Info); - return; - } - - try - { - // 只有在播放状态时才绘制预览 - if (isPlaying) - { - // 检查预览是否有效 - var isValidProperty = spinePreviewType.GetProperty("IsValid"); - bool isValid = isValidProperty != null && (bool)isValidProperty.GetValue(spinePreviewInstance, null); - - if (isValid) - { - // 绘制预览 - 使用HandleInteractivePreviewGUI方法 - var handleMethod = spinePreviewType.GetMethod("HandleInteractivePreviewGUI"); - if (handleMethod != null) - { - handleMethod.Invoke(spinePreviewInstance, new object[] { rect, EditorStyles.helpBox }); - } - } - else - { - EditorGUI.DrawRect(rect, new Color(0.2f, 0.2f, 0.2f)); - GUI.Label(rect, "Spine预览初始化中...", new GUIStyle(GUI.skin.label) - { - alignment = TextAnchor.MiddleCenter, - normal = new GUIStyleState { textColor = Color.gray } - }); - } - } - else - { - // 不播放时显示静态提示 - EditorGUI.DrawRect(rect, new Color(0.2f, 0.2f, 0.2f)); - GUI.Label(rect, "点击播放按钮查看动画", new GUIStyle(GUI.skin.label) - { - alignment = TextAnchor.MiddleCenter, - normal = new GUIStyleState { textColor = Color.gray } - }); - } - } - catch (System.Exception e) - { - EditorGUI.HelpBox(rect, $"Spine预览错误: {e.Message}", MessageType.Warning); - } - } - - private SpriteAtlasInfo? GetSpriteAtlas(Sprite sprite) - { - if (sprite == null) return null; - - if (spriteAtlasCache.TryGetValue(sprite, out var cached)) - { - return cached; - } - - string[] atlasGuids = AssetDatabase.FindAssets("t:SpriteAtlas"); - foreach (string guid in atlasGuids) - { - string atlasPath = AssetDatabase.GUIDToAssetPath(guid); - SpriteAtlas atlas = AssetDatabase.LoadAssetAtPath(atlasPath); - - if (atlas != null && atlas.CanBindTo(sprite)) - { - var info = new SpriteAtlasInfo - { - atlas = atlas, - atlasPath = atlasPath - }; - spriteAtlasCache[sprite] = info; - return info; - } - } - - spriteAtlasCache[sprite] = null; - return null; - } - - #endregion - - #region 修复丢失引用和清理功能 - - /// - /// 修复所有配置表中丢失的引用 - /// 按照路径来找到引用(与"更新所有美术资源路径"相反) - /// - private static void FixAllMissingReferences() - { - if (!EditorUtility.DisplayDialog("修复丢失的引用", - "此操作将遍历所有配置表,根据路径信息修复丢失的引用。\n" + - "适用于跨项目拉取代码后引用丢失但路径正确的情况。\n\n" + - "确定要继续吗?", - "确定", "取消")) - { - return; - } - - try - { - EditorUtility.DisplayProgressBar("修复丢失的引用", "正在查找配置表...", 0f); - - // 查找所有ArtTableSO文件 - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO", new[] { SO_ROOT_PATH }); - - if (guids.Length == 0) - { - EditorUtility.ClearProgressBar(); - EditorUtility.DisplayDialog("提示", "未找到任何配置表。", "确定"); - return; - } - - int totalFixed = 0; - int totalTables = 0; - List errorMessages = new List(); - List processedTables = new List(); - - for (int i = 0; i < guids.Length; i++) - { - string path = AssetDatabase.GUIDToAssetPath(guids[i]); - ArtTableSO table = AssetDatabase.LoadAssetAtPath(path); - - if (table == null) continue; - - EditorUtility.DisplayProgressBar("修复丢失的引用", - $"正在处理: {table.TableName} ({i + 1}/{guids.Length})", - (float)i / guids.Length); - - int fixedInTable = FixTableReferences(table, errorMessages); - - if (fixedInTable > 0) - { - totalFixed += fixedInTable; - totalTables++; - processedTables.Add($"{table.TableName}: {fixedInTable}个"); - - // 保存修改 - EditorUtility.SetDirty(table); - } - } - - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - EditorUtility.ClearProgressBar(); - - // 显示结果 - string message = $"修复完成!\n\n" + - $"处理的配置表: {guids.Length}个\n" + - $"修复引用的配置表: {totalTables}个\n" + - $"总共修复的引用: {totalFixed}个"; - - if (processedTables.Count > 0) - { - message += "\n\n修复详情:\n" + string.Join("\n", processedTables); - } - - if (errorMessages.Count > 0) - { - message += "\n\n⚠️ 以下问题需要注意:\n" + string.Join("\n", errorMessages); - } - - EditorUtility.DisplayDialog(totalFixed > 0 ? "修复成功" : "无需修复", message, "确定"); - - Debug.Log($"[修复丢失引用] {message}"); - } - catch (System.Exception ex) - { - EditorUtility.ClearProgressBar(); - EditorUtility.DisplayDialog("错误", $"修复过程中出现错误:\n{ex.Message}", "确定"); - Debug.LogError($"[修复丢失引用] 错误: {ex.Message}\n{ex.StackTrace}"); - } - } - - /// - /// 修复单个配置表的引用 - /// - private static int FixTableReferences(ArtTableSO table, List errorMessages) - { - int fixedCount = 0; - - foreach (var item in table.Items) - { - // 修复Sprite引用 - if (item.Sprite == null && !string.IsNullOrEmpty(item.SpritePath)) - { - Sprite sprite = AssetDatabase.LoadAssetAtPath(item.SpritePath); - if (sprite != null) - { - item.Sprite = sprite; - fixedCount++; - Debug.Log($"[修复引用] {table.TableName}/{item.Name}: 修复了Sprite引用 ({item.SpritePath})"); - } - else - { - string error = $"[{table.TableName}/{item.Name}] 找不到Sprite: {item.SpritePath}"; - errorMessages.Add(error); - Debug.LogWarning(error); - } - } - - // 修复SpineAsset引用 - if (item.SpineAsset == null && !string.IsNullOrEmpty(item.SpineAssetPath)) - { - SkeletonDataAsset spineAsset = AssetDatabase.LoadAssetAtPath(item.SpineAssetPath); - if (spineAsset != null) - { - item.SpineAsset = spineAsset; - fixedCount++; - Debug.Log($"[修复引用] {table.TableName}/{item.Name}: 修复了SpineAsset引用 ({item.SpineAssetPath})"); - } - else - { - string error = $"[{table.TableName}/{item.Name}] 找不到SpineAsset: {item.SpineAssetPath}"; - errorMessages.Add(error); - Debug.LogWarning(error); - } - } - - // 检查既没有引用又没有路径的情况 - if (item.Sprite == null && string.IsNullOrEmpty(item.SpritePath) && - item.SpineAsset == null && string.IsNullOrEmpty(item.SpineAssetPath)) - { - string error = $"[{table.TableName}/{item.Name}] 既没有引用也没有路径,需要手动配置"; - errorMessages.Add(error); - Debug.LogWarning(error); - } - } - - return fixedCount; - } - - /// - /// 清理所有配置表中引用丢失的Item - /// - private static void CleanupAllMissingItems() - { - if (!EditorUtility.DisplayDialog("清理丢失文件", - "此操作将删除所有配置表中引用丢失的资源项。\n" + - "同时会同步更新对应的JSON文件。\n\n" + - "⚠️ 此操作不可恢复!\n\n" + - "确定要继续吗?", - "确定", "取消")) - { - return; - } - - try - { - EditorUtility.DisplayProgressBar("清理丢失文件", "正在查找配置表...", 0f); - - // 查找所有ArtTableSO文件 - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO", new[] { SO_ROOT_PATH }); - - if (guids.Length == 0) - { - EditorUtility.ClearProgressBar(); - EditorUtility.DisplayDialog("提示", "未找到任何配置表。", "确定"); - return; - } - - int totalRemoved = 0; - int totalTables = 0; - List cleanedTables = new List(); - - for (int i = 0; i < guids.Length; i++) - { - string path = AssetDatabase.GUIDToAssetPath(guids[i]); - ArtTableSO table = AssetDatabase.LoadAssetAtPath(path); - - if (table == null) continue; - - EditorUtility.DisplayProgressBar("清理丢失文件", - $"正在处理: {table.TableName} ({i + 1}/{guids.Length})", - (float)i / guids.Length); - - int removedInTable = CleanupTableMissingItems(table); - - if (removedInTable > 0) - { - totalRemoved += removedInTable; - totalTables++; - cleanedTables.Add($"{table.TableName}: 移除{removedInTable}个"); - - // 保存修改 - EditorUtility.SetDirty(table); - - // 同步到JSON - SyncTableToJson(table); - } - } - - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - EditorUtility.ClearProgressBar(); - - // 显示结果 - string message = $"清理完成!\n\n" + - $"处理的配置表: {guids.Length}个\n" + - $"清理的配置表: {totalTables}个\n" + - $"总共移除的资源项: {totalRemoved}个"; - - if (cleanedTables.Count > 0) - { - message += "\n\n清理详情:\n" + string.Join("\n", cleanedTables); - } - - EditorUtility.DisplayDialog(totalRemoved > 0 ? "清理成功" : "无需清理", message, "确定"); - - Debug.Log($"[清理丢失文件] {message}"); - } - catch (System.Exception ex) - { - EditorUtility.ClearProgressBar(); - EditorUtility.DisplayDialog("错误", $"清理过程中出现错误:\n{ex.Message}", "确定"); - Debug.LogError($"[清理丢失文件] 错误: {ex.Message}\n{ex.StackTrace}"); - } - } - - /// - /// 清理单个配置表中引用丢失的Item - /// - private static int CleanupTableMissingItems(ArtTableSO table) - { - List itemsToRemove = new List(); - - foreach (var item in table.Items) - { - bool hasMissingReference = false; - string missingInfo = ""; - - // 检查Sprite引用是否丢失 - if (!string.IsNullOrEmpty(item.SpritePath) && item.Sprite == null) - { - hasMissingReference = true; - missingInfo += $" Sprite({item.SpritePath})"; - } - - // 检查SpineAsset引用是否丢失 - if (!string.IsNullOrEmpty(item.SpineAssetPath) && item.SpineAsset == null) - { - hasMissingReference = true; - missingInfo += $" SpineAsset({item.SpineAssetPath})"; - } - - if (hasMissingReference) - { - itemsToRemove.Add(item); - Debug.Log($"[清理丢失文件] {table.TableName}/{item.Name}: 标记为删除 - 丢失:{missingInfo}"); - } - } - - // 移除标记的Item - foreach (var item in itemsToRemove) - { - table.Items.Remove(item); - } - - return itemsToRemove.Count; - } - - /// - /// 同步单个配置表到JSON(静态版本) - /// - private static void SyncTableToJson(ArtTableSO table) - { - string soPath = AssetDatabase.GetAssetPath(table); - string relativePath = soPath.Replace(SO_ROOT_PATH, "").Replace(".asset", ".json"); - string jsonPath = JSON_ROOT_PATH + relativePath; - - // 确保目录存在 - string directory = Path.GetDirectoryName(jsonPath); - if (!Directory.Exists(directory)) - { - Directory.CreateDirectory(directory); - } - - // 创建JSON数据 - var jsonData = new ArtTableJsonData - { - TableId = table.TableId, - TableName = table.TableName, - Items = table.Items.Select(item => new ArtItemJsonData - { - Id = item.Id, - Name = item.Name, - Desc = item.Desc, - SpritePath = item.Sprite != null ? AssetDatabase.GetAssetPath(item.Sprite) : "", - SpineAssetPath = item.SpineAsset != null ? AssetDatabase.GetAssetPath(item.SpineAsset) : "", - SpineAnimName = item.SpineAnimName - }).ToList() - }; - - string json = JsonUtility.ToJson(jsonData, true); - File.WriteAllText(jsonPath, json); - - AssetDatabase.Refresh(); - - Debug.Log($"[同步JSON] {jsonPath}"); - } - - #endregion - } -} diff --git a/Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs.meta b/Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs.meta deleted file mode 100644 index 8105298..0000000 --- a/Assets/Editor/Art_Tools/ArtResourceConfigEditor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bb41d2b0834d59546b919fe5439e5e35 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Editor/Art_Tools/ArtResourceLoadTest.cs b/Assets/Editor/Art_Tools/ArtResourceLoadTest.cs deleted file mode 100644 index 42351a5..0000000 --- a/Assets/Editor/Art_Tools/ArtResourceLoadTest.cs +++ /dev/null @@ -1,226 +0,0 @@ -using UnityEngine; -using UnityEditor; -using ArtResource; -using System.Diagnostics; -using Debug = UnityEngine.Debug; - -namespace CrazyMaple.Editor -{ - /// - /// 测试工具:验证SO加载时是否会连带加载引用资源 - /// - /// 测试方法: - /// 1. 在加载SO前后检查内存中的资源数量 - /// 2. 分别测试带引用和不带引用的SO - /// 3. 分析加载耗时差异 - /// - public class ArtResourceLoadTest : EditorWindow - { - [MenuItem("美术工具/性能测试工具/测试SO加载行为")] - public static void ShowWindow() - { - GetWindow("SO加载测试"); - } - - private void OnGUI() - { - GUILayout.Label("SO加载行为测试", EditorStyles.boldLabel); - GUILayout.Space(10); - - if (GUILayout.Button("测试1: 检查SO序列化大小", GUILayout.Height(40))) - { - TestSerializationSize(); - } - - GUILayout.Space(5); - - if (GUILayout.Button("测试2: 对比加载时间(带引用 vs 纯路径)", GUILayout.Height(40))) - { - TestLoadingTime(); - } - - GUILayout.Space(5); - - if (GUILayout.Button("测试3: 检查内存占用(加载前后)", GUILayout.Height(40))) - { - TestMemoryUsage(); - } - - GUILayout.Space(10); - EditorGUILayout.HelpBox( - "这些测试将帮助确定:\n" + - "1. SO是否会连带加载引用资源\n" + - "2. 引用字段对加载速度的影响\n" + - "3. 内存占用差异", - MessageType.Info); - } - - /// - /// 测试1: 检查SO序列化后的文件大小 - /// - private void TestSerializationSize() - { - Debug.Log("========== 测试1: SO序列化大小 =========="); - - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO"); - - if (guids.Length == 0) - { - Debug.LogWarning("未找到任何ArtTableSO"); - return; - } - - foreach (var guid in guids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - var table = AssetDatabase.LoadAssetAtPath(path); - - if (table != null) - { - // 获取文件大小 - var fileInfo = new System.IO.FileInfo(path); - long fileSize = fileInfo.Length; - - // 统计引用数量 - int spriteRefCount = 0; - int spineRefCount = 0; - int pathCount = 0; - - foreach (var item in table.Items) - { - if (item.Sprite != null) spriteRefCount++; - if (item.SpineAsset != null) spineRefCount++; - if (!string.IsNullOrEmpty(item.SpritePath) || !string.IsNullOrEmpty(item.SpineAssetPath)) - pathCount++; - } - - Debug.Log($"SO: {table.TableName}\n" + - $" 文件大小: {fileSize / 1024f:F2} KB\n" + - $" 资源项数: {table.Items.Count}\n" + - $" Sprite引用: {spriteRefCount}\n" + - $" Spine引用: {spineRefCount}\n" + - $" 路径字段: {pathCount}"); - } - } - - Debug.Log("========== 测试1 完成 =========="); - EditorUtility.DisplayDialog("测试完成", "请查看Console日志了解SO文件大小和引用情况", "确定"); - } - - /// - /// 测试2: 对比加载时间 - /// - private void TestLoadingTime() - { - Debug.Log("========== 测试2: 加载时间对比 =========="); - - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO"); - - if (guids.Length == 0) - { - Debug.LogWarning("未找到任何ArtTableSO"); - return; - } - - foreach (var guid in guids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - - // 卸载以确保测试准确 - Resources.UnloadUnusedAssets(); - System.GC.Collect(); - - // 测试加载时间 - var sw = Stopwatch.StartNew(); - var table = AssetDatabase.LoadAssetAtPath(path); - sw.Stop(); - - if (table != null) - { - // 统计引用情况 - int refCount = 0; - foreach (var item in table.Items) - { - if (item.Sprite != null || item.SpineAsset != null) - refCount++; - } - - Debug.Log($"SO: {table.TableName}\n" + - $" 加载耗时: {sw.Elapsed.TotalMilliseconds:F2} ms\n" + - $" 资源项数: {table.Items.Count}\n" + - $" 含引用项: {refCount}\n" + - $" 平均耗时: {sw.Elapsed.TotalMilliseconds / table.Items.Count:F3} ms/项"); - - // 尝试访问一个引用,看看是否触发额外加载 - if (table.Items.Count > 0 && table.Items[0].Sprite != null) - { - var sw2 = Stopwatch.StartNew(); - var sprite = table.Items[0].Sprite; // 访问引用 - var name = sprite.name; // 访问属性 - sw2.Stop(); - Debug.Log($" 访问第1个Sprite引用: {sw2.Elapsed.TotalMilliseconds:F2} ms"); - } - } - } - - Debug.Log("========== 测试2 完成 =========="); - EditorUtility.DisplayDialog("测试完成", "请查看Console日志了解加载时间差异", "确定"); - } - - /// - /// 测试3: 检查内存占用 - /// - private void TestMemoryUsage() - { - Debug.Log("========== 测试3: 内存占用测试 =========="); - - // 清理内存 - Resources.UnloadUnusedAssets(); - System.GC.Collect(); - - long memBefore = System.GC.GetTotalMemory(true); - int textureBefore = Resources.FindObjectsOfTypeAll().Length; - int spriteBefore = Resources.FindObjectsOfTypeAll().Length; - - Debug.Log($"加载前:\n" + - $" 托管内存: {memBefore / 1024f / 1024f:F2} MB\n" + - $" Texture2D数量: {textureBefore}\n" + - $" Sprite数量: {spriteBefore}"); - - // 加载所有SO - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO"); - var tables = new System.Collections.Generic.List(); - - foreach (var guid in guids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - var table = AssetDatabase.LoadAssetAtPath(path); - if (table != null) - { - tables.Add(table); - } - } - - long memAfter = System.GC.GetTotalMemory(false); - int textureAfter = Resources.FindObjectsOfTypeAll().Length; - int spriteAfter = Resources.FindObjectsOfTypeAll().Length; - - Debug.Log($"加载后:\n" + - $" 托管内存: {memAfter / 1024f / 1024f:F2} MB (+{(memAfter - memBefore) / 1024f / 1024f:F2} MB)\n" + - $" Texture2D数量: {textureAfter} (+{textureAfter - textureBefore})\n" + - $" Sprite数量: {spriteAfter} (+{spriteAfter - spriteBefore})"); - - Debug.Log($"共加载 {tables.Count} 个SO"); - - Debug.Log("========== 测试3 完成 =========="); - - EditorUtility.DisplayDialog( - "测试完成", - $"内存增加: {(memAfter - memBefore) / 1024f / 1024f:F2} MB\n" + - $"Texture2D增加: {textureAfter - textureBefore}\n" + - $"Sprite增加: {spriteAfter - spriteBefore}\n\n" + - $"如果纹理/Sprite数量大幅增加,说明确实连带加载了引用资源", - "确定"); - } - } -} diff --git a/Assets/Editor/Art_Tools/ArtResourceLoadTest.cs.meta b/Assets/Editor/Art_Tools/ArtResourceLoadTest.cs.meta deleted file mode 100644 index 1e9a026..0000000 --- a/Assets/Editor/Art_Tools/ArtResourceLoadTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 02be3aa41decbeb488dcce0eb624b081 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Editor/Art_Tools/ArtResourcePathFiller.cs b/Assets/Editor/Art_Tools/ArtResourcePathFiller.cs deleted file mode 100644 index 8775372..0000000 --- a/Assets/Editor/Art_Tools/ArtResourcePathFiller.cs +++ /dev/null @@ -1,296 +0,0 @@ -#if UNITY_EDITOR -using UnityEngine; -using UnityEditor; -using ArtResource; -using System.Linq; - -namespace ArtTools -{ - /// - /// 美术资源路径自动填充工具 - /// - /// 功能: - /// 1. 在保存SO时自动填充SpritePath和SpineAssetPath - /// 2. 提供手动批量更新所有SO的工具 - /// - /// 使用方法: - /// - 自动:在ArtTableSO的OnValidate或保存时调用FillResourcePaths - /// - 手动:菜单 -> 美术工具 -> 更新所有美术资源路径 - /// - public static class ArtResourcePathFiller - { - /// - /// 自动填充单个SO的资源路径 - /// 应该在ArtTableSO保存时调用 - /// - public static void FillResourcePaths(ArtTableSO table) - { - if (table == null || table.Items == null) - return; - - bool hasChanges = false; - - foreach (var item in table.Items) - { - // 填充Sprite路径 - if (item.Sprite != null) - { - string spritePath = AssetDatabase.GetAssetPath(item.Sprite); - if (!string.IsNullOrEmpty(spritePath) && item.SpritePath != spritePath) - { - item.SpritePath = spritePath; - hasChanges = true; - } - } - else - { - // 引用为空时,清空路径 - if (!string.IsNullOrEmpty(item.SpritePath)) - { - item.SpritePath = ""; - hasChanges = true; - } - } - - // 填充Spine路径 - if (item.SpineAsset != null) - { - string spinePath = AssetDatabase.GetAssetPath(item.SpineAsset); - if (!string.IsNullOrEmpty(spinePath) && item.SpineAssetPath != spinePath) - { - item.SpineAssetPath = spinePath; - hasChanges = true; - } - } - else - { - // 引用为空时,清空路径 - if (!string.IsNullOrEmpty(item.SpineAssetPath)) - { - item.SpineAssetPath = ""; - hasChanges = true; - } - } - } - - if (hasChanges) - { - EditorUtility.SetDirty(table); - Debug.Log($"[ArtResourcePathFiller] 已更新资源路径: {table.TableName} ({table.TableId})"); - } - } - - /// - /// 手动批量更新所有ArtTableSO的资源路径 - /// - [MenuItem("美术工具/路径管理/更新所有美术资源路径")] - public static void UpdateAllArtTablePaths() - { - // 查找所有ArtTableSO - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO"); - - if (guids.Length == 0) - { - Debug.LogWarning("[ArtResourcePathFiller] 未找到任何ArtTableSO文件"); - return; - } - - int updatedCount = 0; - int totalCount = guids.Length; - - EditorUtility.DisplayProgressBar("更新美术资源路径", "正在扫描...", 0); - - for (int i = 0; i < guids.Length; i++) - { - string path = AssetDatabase.GUIDToAssetPath(guids[i]); - var table = AssetDatabase.LoadAssetAtPath(path); - - if (table != null) - { - EditorUtility.DisplayProgressBar( - "更新美术资源路径", - $"处理: {table.TableName} ({i + 1}/{totalCount})", - (float)i / totalCount - ); - - FillResourcePaths(table); - updatedCount++; - } - } - - EditorUtility.ClearProgressBar(); - - // 保存所有修改 - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - - Debug.Log($"[ArtResourcePathFiller] ✓ 批量更新完成: 处理了 {updatedCount} 个ArtTableSO"); - EditorUtility.DisplayDialog( - "更新完成", - $"已更新 {updatedCount} 个美术资源表的路径信息\n\n现在可以在Runtime模式下正常加载资源了", - "确定" - ); - } - - /// - /// 验证所有SO的路径完整性 - /// - [MenuItem("美术工具/路径管理/验证美术资源路径完整性")] - public static void ValidateAllPaths() - { - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO"); - - if (guids.Length == 0) - { - Debug.LogWarning("[ArtResourcePathFiller] 未找到任何ArtTableSO文件"); - return; - } - - int missingPathCount = 0; - int totalItemCount = 0; - - foreach (string guid in guids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - var table = AssetDatabase.LoadAssetAtPath(path); - - if (table == null || table.Items == null) - continue; - - foreach (var item in table.Items) - { - totalItemCount++; - - // 检查Sprite - if (item.Sprite != null && string.IsNullOrEmpty(item.SpritePath)) - { - Debug.LogWarning($"[{table.TableName}] 资源项 '{item.Name}' 有Sprite引用但缺少路径"); - missingPathCount++; - } - - // 检查Spine - if (item.SpineAsset != null && string.IsNullOrEmpty(item.SpineAssetPath)) - { - Debug.LogWarning($"[{table.TableName}] 资源项 '{item.Name}' 有Spine引用但缺少路径"); - missingPathCount++; - } - } - } - - if (missingPathCount == 0) - { - Debug.Log($"[ArtResourcePathFiller] ✓ 验证通过: 所有 {totalItemCount} 个资源项的路径都完整"); - EditorUtility.DisplayDialog( - "验证通过", - $"所有 {totalItemCount} 个资源项的路径都完整\n\n可以正常使用Runtime模式", - "确定" - ); - } - else - { - Debug.LogError($"[ArtResourcePathFiller] ✗ 发现 {missingPathCount} 个缺少路径的资源项"); - EditorUtility.DisplayDialog( - "发现问题", - $"发现 {missingPathCount} 个缺少路径的资源项\n\n建议运行【美术工具 -> 更新所有美术资源路径】修复", - "确定" - ); - } - } - } - - /// - /// ArtTableSO的自定义Inspector - /// 在Inspector底部添加"更新路径"按钮 - /// - [CustomEditor(typeof(ArtTableSO))] - public class ArtTableSOInspector : Editor - { - public override void OnInspectorGUI() - { - // 绘制默认Inspector - DrawDefaultInspector(); - - EditorGUILayout.Space(10); - EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); - EditorGUILayout.Space(5); - - var table = target as ArtTableSO; - if (table == null) - return; - - // 统计信息 - int spriteCount = table.Items.Count(item => item.Sprite != null); - int spineCount = table.Items.Count(item => item.SpineAsset != null); - int missingPathCount = table.Items.Count(item => - (item.Sprite != null && string.IsNullOrEmpty(item.SpritePath)) || - (item.SpineAsset != null && string.IsNullOrEmpty(item.SpineAssetPath)) - ); - - EditorGUILayout.BeginVertical(EditorStyles.helpBox); - EditorGUILayout.LabelField("资源路径状态", EditorStyles.boldLabel); - EditorGUILayout.LabelField($"Sprite数量: {spriteCount}"); - EditorGUILayout.LabelField($"Spine数量: {spineCount}"); - - if (missingPathCount > 0) - { - var oldColor = GUI.contentColor; - GUI.contentColor = Color.red; - EditorGUILayout.LabelField($"⚠️ 缺少路径: {missingPathCount}"); - GUI.contentColor = oldColor; - } - else if (spriteCount > 0 || spineCount > 0) - { - var oldColor = GUI.contentColor; - GUI.contentColor = Color.green; - EditorGUILayout.LabelField("✓ 路径完整"); - GUI.contentColor = oldColor; - } - - EditorGUILayout.EndVertical(); - - EditorGUILayout.Space(5); - - // 更新路径按钮 - if (GUILayout.Button("🔄 更新此表的资源路径", GUILayout.Height(30))) - { - ArtResourcePathFiller.FillResourcePaths(table); - EditorUtility.SetDirty(table); - AssetDatabase.SaveAssets(); - EditorUtility.DisplayDialog("更新完成", $"已更新 {table.TableName} 的资源路径", "确定"); - } - - EditorGUILayout.Space(5); - EditorGUILayout.HelpBox( - "提示:保存SO时会自动更新路径,手动点击按钮可强制更新", - MessageType.Info - ); - } - } - - /// - /// 资源保存时自动填充路径 - /// - public class ArtTableSOAssetPostprocessor : AssetPostprocessor - { - static void OnPostprocessAllAssets( - string[] importedAssets, - string[] deletedAssets, - string[] movedAssets, - string[] movedFromAssetPaths) - { - foreach (string assetPath in importedAssets) - { - // 只处理ArtTableSO - if (!assetPath.EndsWith(".asset")) - continue; - - var table = AssetDatabase.LoadAssetAtPath(assetPath); - if (table != null) - { - ArtResourcePathFiller.FillResourcePaths(table); - } - } - } - } -} -#endif diff --git a/Assets/Editor/Art_Tools/ArtResourcePathFiller.cs.meta b/Assets/Editor/Art_Tools/ArtResourcePathFiller.cs.meta deleted file mode 100644 index aea314d..0000000 --- a/Assets/Editor/Art_Tools/ArtResourcePathFiller.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: efcf042502779c34c99f685a9cdba938 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Editor/Art_Tools/BatchCreateSceneResources.cs b/Assets/Editor/Art_Tools/BatchCreateSceneResources.cs deleted file mode 100644 index 037bbe1..0000000 --- a/Assets/Editor/Art_Tools/BatchCreateSceneResources.cs +++ /dev/null @@ -1,288 +0,0 @@ -// using UnityEngine; -// using UnityEditor; -// using System.IO; -// using System.Collections.Generic; -// using ArtResource; - -// namespace EditorArt_Tools -// { -// /// -// /// 批量创建场景资源配置表 -// /// -// public class BatchCreateSceneResources : EditorWindow -// { -// private const string SO_ROOT_PATH = "Assets/Art_SubModule/Art_SO/DecorateScene"; -// private const string JSON_ROOT_PATH = "Assets/Art_SubModule/Art_Json/DecorateScene"; -// private const string MANIFEST_PATH = "Assets/Art_SubModule/Art_SO/art_table_manifest.json"; - -// private int startIndex = 15; -// private int endIndex = 50; -// private string prefix = "Scene"; -// private string suffix = "Resource"; - -// [MenuItem("美术工具/批量创建场景资源")] -// public static void ShowWindow() -// { -// var window = GetWindow("批量创建场景资源"); -// window.minSize = new Vector2(400, 300); -// window.Show(); -// } - -// private void OnGUI() -// { -// EditorGUILayout.LabelField("批量创建场景资源配置表", EditorStyles.boldLabel); -// EditorGUILayout.Space(10); - -// EditorGUILayout.HelpBox( -// "将在以下路径创建配置表:\n" + -// $"SO: {SO_ROOT_PATH}\n" + -// $"JSON: {JSON_ROOT_PATH}", -// MessageType.Info); - -// EditorGUILayout.Space(10); - -// prefix = EditorGUILayout.TextField("前缀:", prefix); -// suffix = EditorGUILayout.TextField("后缀:", suffix); -// startIndex = EditorGUILayout.IntField("起始序号:", startIndex); -// endIndex = EditorGUILayout.IntField("结束序号:", endIndex); - -// EditorGUILayout.Space(10); - -// if (startIndex > endIndex) -// { -// EditorGUILayout.HelpBox("起始序号不能大于结束序号!", MessageType.Error); -// return; -// } - -// int count = endIndex - startIndex + 1; -// EditorGUILayout.HelpBox($"将创建 {count} 个配置表", MessageType.Info); - -// EditorGUILayout.Space(10); - -// // 预览前几个文件名 -// EditorGUILayout.LabelField("文件名预览:", EditorStyles.boldLabel); -// for (int i = 0; i < Mathf.Min(3, count); i++) -// { -// int index = startIndex + i; -// string fileName = $"{prefix}{index}{suffix}"; -// EditorGUILayout.LabelField($" {i + 1}. {fileName}.asset / {fileName}.json"); -// } -// if (count > 3) -// { -// EditorGUILayout.LabelField($" ... (共 {count} 个)"); -// } - -// EditorGUILayout.Space(20); - -// GUI.backgroundColor = Color.green; -// if (GUILayout.Button("开始创建", GUILayout.Height(40))) -// { -// CreateResources(); -// } -// GUI.backgroundColor = Color.white; -// } - -// private void CreateResources() -// { -// if (startIndex > endIndex) -// { -// EditorUtility.DisplayDialog("错误", "起始序号不能大于结束序号!", "确定"); -// return; -// } - -// // 确保目录存在 -// if (!Directory.Exists(SO_ROOT_PATH)) -// { -// Directory.CreateDirectory(SO_ROOT_PATH); -// } -// if (!Directory.Exists(JSON_ROOT_PATH)) -// { -// Directory.CreateDirectory(JSON_ROOT_PATH); -// } - -// int successCount = 0; -// int skipCount = 0; -// List createdFiles = new List(); -// int baseTableId = GetNextAvailableTableId(); - -// for (int i = startIndex; i <= endIndex; i++) -// { -// string fileName = $"{prefix}{i}{suffix}"; -// string soPath = $"{SO_ROOT_PATH}/{fileName}.asset"; -// string jsonPath = $"{JSON_ROOT_PATH}/{fileName}.json"; - -// // 检查文件是否已存在 -// if (File.Exists(soPath) || File.Exists(jsonPath)) -// { -// skipCount++; -// Debug.LogWarning($"文件已存在,跳过: {fileName}"); -// continue; -// } - -// // 创建 ScriptableObject -// var newTable = ScriptableObject.CreateInstance(); -// newTable.TableName = fileName; -// newTable.TableId = baseTableId + (i - startIndex); -// newTable.Items = new List(); - -// // 保存 SO 文件 -// AssetDatabase.CreateAsset(newTable, soPath); - -// // 创建 JSON 文件 -// var jsonData = new ArtTableJsonData -// { -// TableId = newTable.TableId, -// TableName = newTable.TableName, -// Items = new List() -// }; - -// string json = JsonUtility.ToJson(jsonData, true); -// File.WriteAllText(jsonPath, json); - -// createdFiles.Add(fileName); -// successCount++; - -// // 显示进度 -// float progress = (float)(i - startIndex + 1) / (endIndex - startIndex + 1); -// EditorUtility.DisplayProgressBar("创建资源", $"正在创建 {fileName}...", progress); -// } - -// EditorUtility.ClearProgressBar(); - -// // 刷新 AssetDatabase -// AssetDatabase.SaveAssets(); -// AssetDatabase.Refresh(); - -// // 更新 Manifest -// UpdateManifest(); - -// // 显示结果 -// string message = $"创建完成!\n成功创建: {successCount} 个\n跳过已存在: {skipCount} 个"; -// if (createdFiles.Count > 0) -// { -// message += $"\n\n创建的文件:\n{string.Join("\n", createdFiles.ToArray())}"; -// } - -// EditorUtility.DisplayDialog("批量创建完成", message, "确定"); -// Debug.Log($"[BatchCreateSceneResources] {message}"); -// } - -// private int GetNextAvailableTableId() -// { -// // 查找所有现有的 ArtTableSO,获取最大的 TableId -// string[] guids = AssetDatabase.FindAssets("t:ArtTableSO"); -// int maxId = 0; - -// foreach (string guid in guids) -// { -// string path = AssetDatabase.GUIDToAssetPath(guid); -// var table = AssetDatabase.LoadAssetAtPath(path); -// if (table != null && table.TableId > maxId) -// { -// maxId = table.TableId; -// } -// } - -// return maxId + 1; -// } - -// private void UpdateManifest() -// { -// try -// { -// // 查找所有ArtTableSO文件 -// string[] guids = AssetDatabase.FindAssets("t:ArtTableSO", new[] { "Assets/Art_SubModule/Art_SO" }); -// List tablePaths = new List(); - -// foreach (string guid in guids) -// { -// string path = AssetDatabase.GUIDToAssetPath(guid); -// if (!string.IsNullOrEmpty(path)) -// { -// tablePaths.Add(path); -// } -// } - -// // 排序路径 -// tablePaths.Sort(); - -// // 创建或更新manifest -// ArtTableManifest manifest; - -// // 如果文件存在,读取现有的预加载配置 -// if (File.Exists(MANIFEST_PATH)) -// { -// string existingJson = File.ReadAllText(MANIFEST_PATH); -// manifest = JsonUtility.FromJson(existingJson); - -// // 确保字段不为null -// if (manifest == null) -// { -// manifest = new ArtTableManifest(); -// } -// if (manifest.preloadTableIds == null) -// { -// manifest.preloadTableIds = new int[0]; -// } -// } -// else -// { -// // 创建新的manifest -// manifest = new ArtTableManifest -// { -// preloadTableIds = new int[0] -// }; -// } - -// // 更新路径列表 -// manifest.tablePaths = tablePaths.ToArray(); - -// // 序列化为JSON -// string json = JsonUtility.ToJson(manifest, true); - -// // 确保目录存在 -// string directory = Path.GetDirectoryName(MANIFEST_PATH); -// if (!Directory.Exists(directory)) -// { -// Directory.CreateDirectory(directory); -// } - -// // 写入文件 -// File.WriteAllText(MANIFEST_PATH, json); -// AssetDatabase.ImportAsset(MANIFEST_PATH); - -// Debug.Log($"[BatchCreateSceneResources] Manifest文件已更新: {MANIFEST_PATH}, 共 {tablePaths.Count} 个表"); -// } -// catch (System.Exception ex) -// { -// Debug.LogError($"[BatchCreateSceneResources] 更新Manifest文件失败: {ex.Message}"); -// } -// } - -// [System.Serializable] -// public class ArtTableManifest -// { -// public string[] tablePaths; -// public int[] preloadTableIds; -// } - -// [System.Serializable] -// public class ArtTableJsonData -// { -// public int TableId; -// public string TableName; -// public List Items; -// } - -// [System.Serializable] -// public class ArtItemJsonData -// { -// public int Id; -// public string Name; -// public string Desc; -// public string SpritePath; -// public string SpineAssetPath; -// public string SpineAnimName; -// } -// } -// } diff --git a/Assets/Editor/Art_Tools/BatchCreateSceneResources.cs.meta b/Assets/Editor/Art_Tools/BatchCreateSceneResources.cs.meta deleted file mode 100644 index 54b4069..0000000 --- a/Assets/Editor/Art_Tools/BatchCreateSceneResources.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 726a248ed54a61d418c78ad2dff018d3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Editor/Art_Tools/BatchImportSceneSprites.cs b/Assets/Editor/Art_Tools/BatchImportSceneSprites.cs deleted file mode 100644 index 2c367e5..0000000 --- a/Assets/Editor/Art_Tools/BatchImportSceneSprites.cs +++ /dev/null @@ -1,499 +0,0 @@ -// using UnityEngine; -// using UnityEditor; -// using System.IO; -// using System.Collections.Generic; -// using System.Linq; -// using ArtResource; - -// namespace EditorArt_Tools -// { -// /// -// /// 批量导入场景Sprite资源到配置表 -// /// -// public class BatchImportSceneSprites : EditorWindow -// { -// private const string SO_ROOT_PATH = "Assets/Art_SubModule/Art_SO/DecorateScene"; -// private const string JSON_ROOT_PATH = "Assets/Art_SubModule/Art_Json/DecorateScene"; -// private const string SPRITE_ROOT_PATH = "Assets/Art_SubModule/Art_Resource/Art_UISprites/Decorate"; -// private const string MANIFEST_PATH = "Assets/Art_SubModule/Art_SO/art_table_manifest.json"; - -// private int startSceneIndex = 6; -// private int endSceneIndex = 50; -// private Vector2 scrollPosition; -// private List importTasks = new List(); -// private bool isProcessing = false; - -// private class ImportTask -// { -// public string SceneName; -// public string SoPath; -// public string SpriteFolderPath; -// public int SpriteCount; -// public bool FolderExists; -// public bool SoExists; -// public ImportStatus Status; -// } - -// private enum ImportStatus -// { -// Pending, -// Success, -// Failed, -// Skipped -// } - -// [MenuItem("美术工具/批量导入场景Sprite")] -// public static void ShowWindow() -// { -// var window = GetWindow("批量导入场景Sprite"); -// window.minSize = new Vector2(800, 600); -// window.Show(); -// } - -// private void OnEnable() -// { -// ScanTasks(); -// } - -// private void OnGUI() -// { -// EditorGUILayout.LabelField("批量导入场景Sprite资源", EditorStyles.boldLabel); -// EditorGUILayout.Space(10); - -// EditorGUILayout.HelpBox( -// "此工具会自动扫描DecorateScene文件夹下的所有Scene配置表,\n" + -// "并从对应的Sprite文件夹中批量导入所有sprite资源。", -// MessageType.Info); - -// EditorGUILayout.Space(10); - -// // 设置范围 -// EditorGUILayout.BeginHorizontal(); -// EditorGUI.BeginChangeCheck(); -// startSceneIndex = EditorGUILayout.IntField("起始场景序号:", startSceneIndex, GUILayout.Width(200)); -// endSceneIndex = EditorGUILayout.IntField("结束场景序号:", endSceneIndex, GUILayout.Width(200)); -// if (EditorGUI.EndChangeCheck()) -// { -// ScanTasks(); -// } - -// if (GUILayout.Button("刷新扫描", GUILayout.Width(100))) -// { -// ScanTasks(); -// } -// EditorGUILayout.EndHorizontal(); - -// EditorGUILayout.Space(10); - -// // 统计信息 -// int validTasks = importTasks.Count(t => t.FolderExists && t.SoExists && t.SpriteCount > 0); -// int totalSprites = importTasks.Where(t => t.FolderExists && t.SoExists).Sum(t => t.SpriteCount); - -// EditorGUILayout.BeginHorizontal("box"); -// EditorGUILayout.LabelField($"找到配置表: {importTasks.Count(t => t.SoExists)} 个"); -// EditorGUILayout.LabelField($"可导入任务: {validTasks} 个"); -// EditorGUILayout.LabelField($"总Sprite数: {totalSprites} 个"); -// EditorGUILayout.EndHorizontal(); - -// EditorGUILayout.Space(10); - -// // 任务列表 -// EditorGUILayout.LabelField("导入任务列表:", EditorStyles.boldLabel); -// scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); - -// foreach (var task in importTasks) -// { -// DrawTaskItem(task); -// } - -// EditorGUILayout.EndScrollView(); - -// EditorGUILayout.Space(10); - -// // 操作按钮 -// GUI.enabled = !isProcessing && validTasks > 0; -// GUI.backgroundColor = Color.green; -// if (GUILayout.Button("开始批量导入", GUILayout.Height(40))) -// { -// StartBatchImport(); -// } -// GUI.backgroundColor = Color.white; -// GUI.enabled = true; - -// if (isProcessing) -// { -// EditorGUILayout.HelpBox("正在处理中,请稍候...", MessageType.Warning); -// } -// } - -// private void DrawTaskItem(ImportTask task) -// { -// Color originalBg = GUI.backgroundColor; - -// // 根据状态设置背景色 -// switch (task.Status) -// { -// case ImportStatus.Success: -// GUI.backgroundColor = new Color(0.5f, 1f, 0.5f, 0.3f); -// break; -// case ImportStatus.Failed: -// GUI.backgroundColor = new Color(1f, 0.5f, 0.5f, 0.3f); -// break; -// case ImportStatus.Skipped: -// GUI.backgroundColor = new Color(1f, 1f, 0.5f, 0.3f); -// break; -// } - -// EditorGUILayout.BeginVertical("box"); -// GUI.backgroundColor = originalBg; - -// EditorGUILayout.BeginHorizontal(); - -// // 状态图标 -// string statusIcon = task.Status switch -// { -// ImportStatus.Success => "✔", -// ImportStatus.Failed => "✘", -// ImportStatus.Skipped => "⊘", -// _ => "○" -// }; -// EditorGUILayout.LabelField(statusIcon, GUILayout.Width(20)); - -// // 场景名称 -// EditorGUILayout.LabelField(task.SceneName, EditorStyles.boldLabel, GUILayout.Width(150)); - -// // SO状态 -// if (task.SoExists) -// { -// GUI.color = Color.green; -// EditorGUILayout.LabelField("SO✔", GUILayout.Width(40)); -// } -// else -// { -// GUI.color = Color.red; -// EditorGUILayout.LabelField("SO✘", GUILayout.Width(40)); -// } -// GUI.color = Color.white; - -// // 文件夹状态 -// if (task.FolderExists) -// { -// GUI.color = Color.green; -// EditorGUILayout.LabelField($"文件夹✔ ({task.SpriteCount} sprites)", GUILayout.Width(150)); -// } -// else -// { -// GUI.color = Color.red; -// EditorGUILayout.LabelField("文件夹✘", GUILayout.Width(150)); -// } -// GUI.color = Color.white; - -// GUILayout.FlexibleSpace(); - -// // 状态文本 -// if (task.Status != ImportStatus.Pending) -// { -// EditorGUILayout.LabelField(task.Status.ToString(), GUILayout.Width(80)); -// } - -// EditorGUILayout.EndHorizontal(); - -// // 路径信息 -// EditorGUI.indentLevel++; -// EditorGUILayout.LabelField($"SO: {task.SoPath}", EditorStyles.miniLabel); -// EditorGUILayout.LabelField($"Sprite: {task.SpriteFolderPath}", EditorStyles.miniLabel); -// EditorGUI.indentLevel--; - -// EditorGUILayout.EndVertical(); -// } - -// private void ScanTasks() -// { -// importTasks.Clear(); - -// for (int i = startSceneIndex; i <= endSceneIndex; i++) -// { -// string sceneName = $"Scene{i}Resource"; -// string soPath = $"{SO_ROOT_PATH}/{sceneName}.asset"; -// string spriteFolderPath = $"{SPRITE_ROOT_PATH}/Scene{i}"; - -// var task = new ImportTask -// { -// SceneName = sceneName, -// SoPath = soPath, -// SpriteFolderPath = spriteFolderPath, -// SoExists = File.Exists(soPath), -// FolderExists = Directory.Exists(spriteFolderPath), -// Status = ImportStatus.Pending -// }; - -// // 统计Sprite数量 -// if (task.FolderExists) -// { -// string[] guids = AssetDatabase.FindAssets("t:Sprite", new[] { spriteFolderPath }); -// task.SpriteCount = guids.Length; -// } - -// importTasks.Add(task); -// } - -// Repaint(); -// } - -// private void StartBatchImport() -// { -// isProcessing = true; - -// int successCount = 0; -// int failedCount = 0; -// int skippedCount = 0; -// int totalSpritesImported = 0; - -// try -// { -// for (int i = 0; i < importTasks.Count; i++) -// { -// var task = importTasks[i]; - -// // 跳过无效任务 -// if (!task.SoExists || !task.FolderExists || task.SpriteCount == 0) -// { -// task.Status = ImportStatus.Skipped; -// skippedCount++; -// continue; -// } - -// // 显示进度 -// float progress = (float)i / importTasks.Count; -// EditorUtility.DisplayProgressBar("批量导入", $"正在处理 {task.SceneName}...", progress); - -// // 加载SO -// var table = AssetDatabase.LoadAssetAtPath(task.SoPath); -// if (table == null) -// { -// Debug.LogError($"无法加载配置表: {task.SoPath}"); -// task.Status = ImportStatus.Failed; -// failedCount++; -// continue; -// } - -// // 获取所有Sprite -// string[] guids = AssetDatabase.FindAssets("t:Sprite", new[] { task.SpriteFolderPath }); -// if (guids.Length == 0) -// { -// task.Status = ImportStatus.Skipped; -// skippedCount++; -// continue; -// } - -// // 获取当前最大ID -// int startId = table.Items.Count > 0 ? table.Items.Max(item => item.Id) + 1 : 1; - -// // 导入Sprite -// int importedCount = 0; -// foreach (string guid in guids) -// { -// string assetPath = AssetDatabase.GUIDToAssetPath(guid); -// Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath); - -// if (sprite != null) -// { -// // 检查是否已存在同名资源 -// if (table.Items.Any(item => item.Name == sprite.name)) -// { -// Debug.LogWarning($"[{task.SceneName}] 跳过重复资源: {sprite.name}"); -// continue; -// } - -// var newItem = new ArtItemData -// { -// Id = startId + importedCount, -// Name = sprite.name, -// Desc = "", -// Sprite = sprite -// }; - -// table.Items.Add(newItem); -// importedCount++; -// } -// } - -// if (importedCount > 0) -// { -// // 保存SO -// EditorUtility.SetDirty(table); -// AssetDatabase.SaveAssets(); - -// // 同步JSON -// SyncToJson(table); - -// task.Status = ImportStatus.Success; -// successCount++; -// totalSpritesImported += importedCount; - -// Debug.Log($"[{task.SceneName}] 成功导入 {importedCount} 个sprite资源"); -// } -// else -// { -// task.Status = ImportStatus.Skipped; -// skippedCount++; -// } - -// Repaint(); -// } - -// // 更新Manifest -// UpdateManifest(); -// } -// finally -// { -// EditorUtility.ClearProgressBar(); -// isProcessing = false; -// } - -// // 显示结果 -// string message = $"批量导入完成!\n\n" + -// $"✔ 成功: {successCount} 个配置表\n" + -// $"✘ 失败: {failedCount} 个\n" + -// $"⊘ 跳过: {skippedCount} 个\n" + -// $"📦 总共导入: {totalSpritesImported} 个sprite"; - -// EditorUtility.DisplayDialog("批量导入完成", message, "确定"); -// Debug.Log($"[BatchImportSceneSprites] {message}"); - -// Repaint(); -// } - -// private void SyncToJson(ArtTableSO table) -// { -// string soPath = AssetDatabase.GetAssetPath(table); -// string relativePath = soPath.Replace(SO_ROOT_PATH, "").Replace(".asset", ".json"); -// string jsonPath = JSON_ROOT_PATH + relativePath; - -// // 确保目录存在 -// string directory = Path.GetDirectoryName(jsonPath); -// if (!Directory.Exists(directory)) -// { -// Directory.CreateDirectory(directory); -// } - -// // 创建JSON数据 -// var jsonData = new ArtTableJsonData -// { -// TableId = table.TableId, -// TableName = table.TableName, -// Items = table.Items.Select(item => new ArtItemJsonData -// { -// Id = item.Id, -// Name = item.Name, -// Desc = item.Desc, -// SpritePath = item.Sprite != null ? AssetDatabase.GetAssetPath(item.Sprite) : "", -// SpineAssetPath = item.SpineAsset != null ? AssetDatabase.GetAssetPath(item.SpineAsset) : "", -// SpineAnimName = item.SpineAnimName -// }).ToList() -// }; - -// string json = JsonUtility.ToJson(jsonData, true); -// File.WriteAllText(jsonPath, json); - -// AssetDatabase.ImportAsset(jsonPath); -// } - -// private void UpdateManifest() -// { -// try -// { -// // 查找所有ArtTableSO文件 -// string[] guids = AssetDatabase.FindAssets("t:ArtTableSO", new[] { "Assets/Art_SubModule/Art_SO" }); -// List tablePaths = new List(); - -// foreach (string guid in guids) -// { -// string path = AssetDatabase.GUIDToAssetPath(guid); -// if (!string.IsNullOrEmpty(path)) -// { -// tablePaths.Add(path); -// } -// } - -// // 排序路径 -// tablePaths.Sort(); - -// // 创建或更新manifest -// ArtTableManifest manifest; - -// // 如果文件存在,读取现有的预加载配置 -// if (File.Exists(MANIFEST_PATH)) -// { -// string existingJson = File.ReadAllText(MANIFEST_PATH); -// manifest = JsonUtility.FromJson(existingJson); - -// if (manifest == null) -// { -// manifest = new ArtTableManifest(); -// } -// if (manifest.preloadTableIds == null) -// { -// manifest.preloadTableIds = new int[0]; -// } -// } -// else -// { -// manifest = new ArtTableManifest -// { -// preloadTableIds = new int[0] -// }; -// } - -// // 更新路径列表 -// manifest.tablePaths = tablePaths.ToArray(); - -// // 序列化为JSON -// string json = JsonUtility.ToJson(manifest, true); - -// // 确保目录存在 -// string directory = Path.GetDirectoryName(MANIFEST_PATH); -// if (!Directory.Exists(directory)) -// { -// Directory.CreateDirectory(directory); -// } - -// // 写入文件 -// File.WriteAllText(MANIFEST_PATH, json); -// AssetDatabase.ImportAsset(MANIFEST_PATH); - -// Debug.Log($"[BatchImportSceneSprites] Manifest文件已更新: {MANIFEST_PATH}"); -// } -// catch (System.Exception ex) -// { -// Debug.LogError($"[BatchImportSceneSprites] 更新Manifest文件失败: {ex.Message}"); -// } -// } - -// [System.Serializable] -// public class ArtTableManifest -// { -// public string[] tablePaths; -// public int[] preloadTableIds; -// } - -// [System.Serializable] -// public class ArtTableJsonData -// { -// public int TableId; -// public string TableName; -// public List Items; -// } - -// [System.Serializable] -// public class ArtItemJsonData -// { -// public int Id; -// public string Name; -// public string Desc; -// public string SpritePath; -// public string SpineAssetPath; -// public string SpineAnimName; -// } -// } -// } diff --git a/Assets/Editor/Art_Tools/BatchImportSceneSprites.cs.meta b/Assets/Editor/Art_Tools/BatchImportSceneSprites.cs.meta deleted file mode 100644 index f7a0882..0000000 --- a/Assets/Editor/Art_Tools/BatchImportSceneSprites.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b80c4bb5f244fba42b19940341c9efee -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs b/Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs deleted file mode 100644 index 45d7b14..0000000 --- a/Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs +++ /dev/null @@ -1,131 +0,0 @@ -using UnityEngine; -using UnityEditor; -using ArtResource; -using System.Diagnostics; -using GameFramework.Resource; -using UnityGameFramework.Runtime; -using Debug = UnityEngine.Debug; - -namespace CrazyMaple.Editor -{ - /// - /// 对比测试:AssetDatabase vs GameEntry.Resource.LoadAsset - /// - public class LoadMethodComparisonTest : EditorWindow - { - [MenuItem("美术工具/性能测试工具/对比加载方式性能")] - public static void ShowWindow() - { - GetWindow("加载方式对比"); - } - - private void OnGUI() - { - GUILayout.Label("对比测试", EditorStyles.boldLabel); - GUILayout.Space(10); - - EditorGUILayout.HelpBox( - "对比两种加载方式的性能差异:\n" + - "1. AssetDatabase.LoadAssetAtPath(Editor专用)\n" + - "2. GameEntry.Resource.LoadAsset(框架统一接口)", - MessageType.Info); - - GUILayout.Space(10); - - if (GUILayout.Button("运行对比测试", GUILayout.Height(40))) - { - RunComparisonTest(); - } - } - - private void RunComparisonTest() - { - Debug.Log("========== 加载方式性能对比 =========="); - - string[] guids = AssetDatabase.FindAssets("t:ArtTableSO"); - - if (guids.Length == 0) - { - Debug.LogWarning("未找到任何ArtTableSO"); - return; - } - - // 清理缓存 - Resources.UnloadUnusedAssets(); - System.GC.Collect(); - - foreach (var guid in guids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - - Debug.Log($"\n--- 测试文件: {path} ---"); - - // 方法1: AssetDatabase(Editor专用,最直接) - Resources.UnloadUnusedAssets(); - var sw1 = Stopwatch.StartNew(); - var table1 = AssetDatabase.LoadAssetAtPath(path); - sw1.Stop(); - Debug.Log($"[AssetDatabase] 加载耗时: {sw1.Elapsed.TotalMilliseconds:F2} ms"); - - // 方法2: GameEntry.Resource(框架接口,通过EditorResourceComponent) - Resources.UnloadUnusedAssets(); - - // 检查 GameEntry 是否已初始化 - if (GameEntry.Resource == null) - { - Debug.LogWarning("[GameEntry.Resource] GameEntry未初始化,请先运行游戏或在Play模式下测试"); - Debug.LogWarning("跳过GameEntry.Resource测试,只显示AssetDatabase结果"); - continue; - } - - var sw2 = Stopwatch.StartNew(); - - bool loadCompleted = false; - ArtTableSO table2 = null; - - var callbacks = new LoadAssetCallbacks( - (assetName, asset, duration, userData) => - { - sw2.Stop(); - table2 = asset as ArtTableSO; - loadCompleted = true; - Debug.Log($"[GameEntry.Resource] 加载耗时: {sw2.Elapsed.TotalMilliseconds:F2} ms"); - Debug.Log($" - Framework报告的duration: {duration:F4} 秒 ({duration * 1000:F2} ms)"); - }, - (assetName, status, errorMessage, userData) => - { - sw2.Stop(); - loadCompleted = true; - Debug.LogError($"[GameEntry.Resource] 加载失败: {errorMessage}"); - } - ); - - GameEntry.Resource.LoadAsset(path, typeof(ArtTableSO), callbacks); - - // 等待异步加载完成(Editor模式下实际是同步的,但需要等待回调) - int timeout = 0; - while (!loadCompleted && timeout < 1000) - { - System.Threading.Thread.Sleep(1); - timeout++; - } - - if (!loadCompleted) - { - Debug.LogError("[GameEntry.Resource] 加载超时!"); - } - - // 对比 - if (table1 != null && table2 != null) - { - float ratio = (float)sw2.Elapsed.TotalMilliseconds / (float)sw1.Elapsed.TotalMilliseconds; - Debug.Log($"性能差异: GameEntry.Resource 比 AssetDatabase 慢 {ratio:F1}x"); - } - } - - Debug.Log("\n========== 测试完成 =========="); - Debug.Log("结论: 如果GameEntry.Resource明显更慢,说明EditorResourceComponent有额外开销"); - Debug.Log("建议: 真机/打包后测试,Runtime的AssetBundleResourceComponent性能可能完全不同"); - } - } -} diff --git a/Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs.meta b/Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs.meta deleted file mode 100644 index 0fad991..0000000 --- a/Assets/Editor/Art_Tools/LoadMethodComparisonTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0335076a32ae570418eff3880abc9044 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scenes/Decorate 1.unity b/Assets/Scenes/Decorate 1.unity index a6bc9f4..4130ec0 100644 --- a/Assets/Scenes/Decorate 1.unity +++ b/Assets/Scenes/Decorate 1.unity @@ -161,7 +161,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 160, y: 346} + m_AnchoredPosition: {x: 311, y: 261} m_SizeDelta: {x: 224, y: 224} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &44134627 @@ -798,7 +798,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 8fbc403f90595404bbebdf73516e6504, type: 3} + m_Sprite: {fileID: 21300000, guid: 9ece262a2a525744294414972b2db2ca, type: 3} m_Type: 0 m_PreserveAspect: 1 m_FillCenter: 1 @@ -1448,7 +1448,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 73d3bd13892237c4881388f75df5e7e7, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -1504,8 +1504,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 209, y: 337} - m_SizeDelta: {x: 118, y: 143} + m_AnchoredPosition: {x: -167, y: 354} + m_SizeDelta: {x: 247, y: 269} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &66280885595883256 RectTransform: @@ -1523,8 +1523,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 616, y: 146} - m_SizeDelta: {x: 208, y: 651} + m_AnchoredPosition: {x: 337, y: 259} + m_SizeDelta: {x: 180, y: 172} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &85635971691376102 GameObject: @@ -1604,7 +1604,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!1 &141907879981636467 GameObject: m_ObjectHideFlags: 0 @@ -1640,8 +1640,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -304, y: 192} - m_SizeDelta: {x: 114, y: 154} + m_AnchoredPosition: {x: -619, y: -43} + m_SizeDelta: {x: 171, y: 300} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &145018274309319688 MonoBehaviour: @@ -1724,7 +1724,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &204223758904145394 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1751,7 +1751,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!114 &224506319226584444 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1772,7 +1772,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: bdf74df5bcd3aac468c230f7725ac61c, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -1868,7 +1868,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!1 &255053163971334557 GameObject: m_ObjectHideFlags: 0 @@ -1911,8 +1911,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -549, y: 61} - m_SizeDelta: {x: 377, y: 339} + m_AnchoredPosition: {x: 187, y: 1} + m_SizeDelta: {x: 59, y: 121} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &301803608866542020 RectTransform: @@ -1930,8 +1930,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 234, y: -160} - m_SizeDelta: {x: 346, y: 282} + m_AnchoredPosition: {x: 41, y: -615} + m_SizeDelta: {x: 168, y: 225} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &304721368165605499 GameObject: @@ -2001,7 +2001,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 919872a9dcc2d2f4f8335f2f56e10c95, type: 3} + m_Sprite: {fileID: 21300000, guid: d76f6497cf0487845bfe2144e374f6eb, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -2100,7 +2100,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &394462287181125627 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2130,8 +2130,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 517, y: -48} - m_SizeDelta: {x: 97, y: 42} + m_AnchoredPosition: {x: 234, y: -704} + m_SizeDelta: {x: 898, y: 737} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &405319715800605251 CanvasRenderer: @@ -2157,8 +2157,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 518, y: 888} - m_SizeDelta: {x: 185, y: 133} + m_AnchoredPosition: {x: -266, y: 77} + m_SizeDelta: {x: 132, y: 241} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &427740070162584461 MonoBehaviour: @@ -2180,7 +2180,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 0fbe8ba0afe446c408973a12cbaf1e28, type: 3} + m_Sprite: {fileID: 21300000, guid: 03d0e5dfa8dc56542976930db7de62f5, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -2306,7 +2306,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &513546517910499194 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2456,7 +2456,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &582513557830009276 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2911,8 +2911,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 143, y: 546} - m_SizeDelta: {x: 326, y: 217} + m_AnchoredPosition: {x: -211, y: -291} + m_SizeDelta: {x: 192, y: 193} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &948331364288386836 RectTransform: @@ -2953,7 +2953,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 70521676327ade540915119892844566, type: 3} + m_Sprite: {fileID: 21300000, guid: 8714d95fbfbb5e649af8db016f76cd0c, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -3027,7 +3027,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 23527c13b1343134d9334f41d987b416, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -3053,8 +3053,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -274, y: -190} - m_SizeDelta: {x: 319, y: 449} + m_AnchoredPosition: {x: -273, y: -148} + m_SizeDelta: {x: 399, y: 282} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1033201468386141480 MonoBehaviour: @@ -3228,8 +3228,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1, y: -669} - m_SizeDelta: {x: 1443, y: 1116} + m_AnchoredPosition: {x: -429, y: -881} + m_SizeDelta: {x: 578, y: 702} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &1098832791404804762 RectTransform: @@ -3247,8 +3247,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 392, y: -788} - m_SizeDelta: {x: 657, y: 879} + m_AnchoredPosition: {x: -384, y: -276} + m_SizeDelta: {x: 220, y: 316} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &1104619130804873202 RectTransform: @@ -3266,8 +3266,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 72, y: 314} - m_SizeDelta: {x: 204, y: 143} + m_AnchoredPosition: {x: -29, y: 873} + m_SizeDelta: {x: 1223, y: 589} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &1107868689099301942 RectTransform: @@ -3418,8 +3418,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1, y: -943} - m_SizeDelta: {x: 1443, y: 577} + m_AnchoredPosition: {x: 294, y: -405} + m_SizeDelta: {x: 443, y: 650} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1143680622040522448 GameObject: @@ -3654,7 +3654,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: ba07d8de2fe17f64587a7565268f8260, type: 3} + m_Sprite: {fileID: 21300000, guid: aa7b6e5c1f0b6ba48866b8f2e4d5aa8b, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -3710,8 +3710,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 471, y: -248} - m_SizeDelta: {x: 223, y: 145} + m_AnchoredPosition: {x: -343, y: -944} + m_SizeDelta: {x: 538, y: 533} m_Pivot: {x: 0.5, y: 0.5} --- !u!198 &1255442451169870535 ParticleSystem: @@ -8646,7 +8646,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 77dd923849206a2498ef31db29b5ac26, type: 3} + m_Sprite: {fileID: 21300000, guid: 7a50ff764c18e9a49a4aeabc781cc670, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -8672,8 +8672,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 570, y: 71} - m_SizeDelta: {x: 313, y: 233} + m_AnchoredPosition: {x: 483, y: 581} + m_SizeDelta: {x: 230, y: 432} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1290443326886573254 MonoBehaviour: @@ -8832,7 +8832,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &1369975277188044102 CanvasRenderer: m_ObjectHideFlags: 0 @@ -8869,7 +8869,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 65d947e50bbc44c46ba9c3bb39232ef8, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -8903,8 +8903,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -249, y: 60} - m_SizeDelta: {x: 134, y: 79} + m_AnchoredPosition: {x: -205, y: -77} + m_SizeDelta: {x: 235, y: 195} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &1437024081088657215 RectTransform: @@ -8922,8 +8922,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 133, y: -9} - m_SizeDelta: {x: 103, y: 358} + m_AnchoredPosition: {x: 219, y: 159} + m_SizeDelta: {x: 194, y: 120} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1490221978379490717 MonoBehaviour: @@ -8945,7 +8945,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 46c67d89a7097ec44b80c36e36e38739, type: 3} + m_Sprite: {fileID: 21300000, guid: 80f9420c4e352cc4a818ea22612aa11c, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -9204,7 +9204,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 2f60d44d8b8d7da419f7f6c0a9777295, type: 3} + m_Sprite: {fileID: 21300000, guid: 9e3076ab8bdadbd4ea5eb6ce637d80de, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -9242,7 +9242,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 4d44c64e0bb4ad44bb38476fe011c4af, type: 3} + m_Sprite: {fileID: 21300000, guid: 98eb14cf398030045aa0f778f7da595c, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -9346,7 +9346,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: dd37224a35ed41d4289c3ea70356361e, type: 3} + m_Sprite: {fileID: 21300000, guid: 4000947a60e65634485bf50b390c2063, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -9401,7 +9401,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1735746601320041435 RectTransform: m_ObjectHideFlags: 0 @@ -9439,7 +9439,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &1750556224937401020 CanvasRenderer: m_ObjectHideFlags: 0 @@ -9536,7 +9536,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: d727369ac15f1c44e9c3183644d367bc, type: 3} + m_Sprite: {fileID: 21300000, guid: f30a63dc637371b4f9344e52ee1b0ca0, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -9564,7 +9564,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &2019083837349537561 MonoBehaviour: m_ObjectHideFlags: 0 @@ -9746,7 +9746,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 48b956e26a08198419a040e93a1ac80f, type: 3} + m_Sprite: {fileID: 21300000, guid: a71ce31ae72350548bfed421c5cffe27, type: 3} m_Type: 0 m_PreserveAspect: 1 m_FillCenter: 1 @@ -10006,7 +10006,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 6c2e6a5b705811848a69e4939e41082f, type: 3} + m_Sprite: {fileID: 21300000, guid: 6dec759384cffad4bb26b7f38b4dce62, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -10096,8 +10096,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -293, y: -559} - m_SizeDelta: {x: 234, y: 385} + m_AnchoredPosition: {x: -362, y: -69} + m_SizeDelta: {x: 121, y: 128} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2214834599883406648 MonoBehaviour: @@ -10119,7 +10119,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7a15ab8d582c5794c930ec2bf7b5c81c, type: 3} + m_Sprite: {fileID: 21300000, guid: e89ca1d5c3e66404f95251afa43ecdd1, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -10147,7 +10147,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!1 &2221328399613772070 GameObject: m_ObjectHideFlags: 0 @@ -10239,8 +10239,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -540, y: 104} - m_SizeDelta: {x: 292, y: 295} + m_AnchoredPosition: {x: 94, y: -82} + m_SizeDelta: {x: 394, y: 142} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2262548079046457632 MonoBehaviour: @@ -10262,7 +10262,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 1b86cbf3c0007714798233e3974aea24, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -10372,7 +10372,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!1 &2281257550793076135 GameObject: m_ObjectHideFlags: 0 @@ -10629,7 +10629,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 80e03df95581a284f997b582a441eb33, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -10909,7 +10909,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7a15ab8d582c5794c930ec2bf7b5c81c, type: 3} + m_Sprite: {fileID: 21300000, guid: e89ca1d5c3e66404f95251afa43ecdd1, type: 3} m_Type: 0 m_PreserveAspect: 1 m_FillCenter: 1 @@ -10974,7 +10974,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: a5cf300bf99790547af25ff366cce71b, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11217,8 +11217,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -383, y: -397} - m_SizeDelta: {x: 337, y: 261} + m_AnchoredPosition: {x: -192, y: -280} + m_SizeDelta: {x: 213, y: 172} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2784281579205961279 MonoBehaviour: @@ -11240,7 +11240,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 33cf426eacbca004d867f56e3cf3538d, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11266,8 +11266,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 309, y: -303} - m_SizeDelta: {x: 122, y: 67} + m_AnchoredPosition: {x: 237, y: -33} + m_SizeDelta: {x: 510, y: 818} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2798350426710343626 CanvasRenderer: @@ -11297,7 +11297,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 5fd2f367f0f0eef4b8e5f81e1104db98, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11350,8 +11350,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -244, y: -535} - m_SizeDelta: {x: 570, y: 454} + m_AnchoredPosition: {x: 365, y: -384} + m_SizeDelta: {x: 724, y: 291} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2830990861611544670 MonoBehaviour: @@ -11432,8 +11432,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -1, y: 910} - m_SizeDelta: {x: 1442, y: 520} + m_AnchoredPosition: {x: 0, y: -31} + m_SizeDelta: {x: 1443, y: 2398} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2873926867218146194 MonoBehaviour: @@ -11495,8 +11495,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 106, y: -377} - m_SizeDelta: {x: 361, y: 198} + m_AnchoredPosition: {x: 264, y: -411} + m_SizeDelta: {x: 399, y: 645} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2899728717505396091 MonoBehaviour: @@ -11518,7 +11518,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 3a89fa03579e19740a28ea5f306e1422, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11548,7 +11548,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 8ae03434886ab4f4db189059302b0c9c, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11576,7 +11576,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &2952728783261631549 MonoBehaviour: m_ObjectHideFlags: 0 @@ -11641,7 +11641,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: e245d6661b8f2d84d80d2b3bac743252, type: 3} + m_Sprite: {fileID: 21300000, guid: eaab3e1b2f2f31245bd3114806f5734a, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11690,7 +11690,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 8dfe4ce615e251042b45c4dda7e02aa7, type: 3} + m_Sprite: {fileID: 21300000, guid: 8a694f15746919a4995926e4b3181ef8, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11716,8 +11716,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 119, y: 327} - m_SizeDelta: {x: 646, y: 801} + m_AnchoredPosition: {x: 494, y: -675} + m_SizeDelta: {x: 357, y: 760} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &2968708616354321304 RectTransform: @@ -11754,8 +11754,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1, y: 507} - m_SizeDelta: {x: 1443, y: 1072} + m_AnchoredPosition: {x: -165, y: 318} + m_SizeDelta: {x: 150, y: 184} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &3000346062412063365 MonoBehaviour: @@ -11777,7 +11777,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 12276d90096c4504b914896deb9740d2, type: 3} + m_Sprite: {fileID: 21300000, guid: fec9c657da42eac488ff78be70034f14, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -12019,8 +12019,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -422, y: 453} - m_SizeDelta: {x: 578, y: 283} + m_AnchoredPosition: {x: 120, y: 97} + m_SizeDelta: {x: 459, y: 498} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &3106637962064535478 MonoBehaviour: @@ -12113,7 +12113,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 447694a9749944a4b938b7a0a9efeb6d, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -12162,7 +12162,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 5f96dd6e71c7ae541a7b9c458ff67717, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -12208,7 +12208,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 896c848e7dcbee44dba5d64895cec07e, type: 3} + m_Sprite: {fileID: 21300000, guid: c4198e7b16f9a3143964ea3029eec2a5, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -12402,8 +12402,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 395, y: -792} - m_SizeDelta: {x: 651, y: 865} + m_AnchoredPosition: {x: -165, y: 317} + m_SizeDelta: {x: 150, y: 184} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &3236386948997328974 MonoBehaviour: @@ -12532,7 +12532,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 9b433ebe2db780b4fb48f653bfa442fb, type: 3} + m_Sprite: {fileID: 21300000, guid: bd18ab3f9f7fb9c45b8cfd3dbe03e017, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -12575,7 +12575,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &3302760321529769845 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12721,7 +12721,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: ef250943c1dc0b044806b052cc730610, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -12787,7 +12787,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!114 &3426935401136837784 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12808,7 +12808,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 0e7148125a235804fa9cb15d0b7610c7, type: 3} + m_Sprite: {fileID: 21300000, guid: 742239e56a2f44c44a4ad32363c94e15, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -12948,8 +12948,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -491, y: -27} - m_SizeDelta: {x: 234, y: 101} + m_AnchoredPosition: {x: -1, y: -427} + m_SizeDelta: {x: 1440, y: 788} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &3523443186695679692 CanvasRenderer: @@ -13072,7 +13072,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 8ff62604fa70fa74787633ebc7bb2f58, type: 3} + m_Sprite: {fileID: 21300000, guid: 094dfe83348d96a4680af3ec8b1f956c, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -13106,8 +13106,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -176, y: -301} - m_SizeDelta: {x: 661, y: 641} + m_AnchoredPosition: {x: -259, y: 606} + m_SizeDelta: {x: 211, y: 328} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &3615674826930882728 GameObject: @@ -13127,7 +13127,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &3638600943137216056 RectTransform: m_ObjectHideFlags: 0 @@ -13144,8 +13144,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 415, y: 34} - m_SizeDelta: {x: 244, y: 274} + m_AnchoredPosition: {x: 62, y: 591} + m_SizeDelta: {x: 333, y: 366} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &3649754524093700354 GameObject: @@ -13183,7 +13183,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &3691563330728364819 RectTransform: m_ObjectHideFlags: 0 @@ -13200,8 +13200,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 298, y: 305} - m_SizeDelta: {x: 194, y: 114} + m_AnchoredPosition: {x: 534, y: -27} + m_SizeDelta: {x: 244, y: 972} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &3696258374380996548 CanvasRenderer: @@ -13358,8 +13358,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -437, y: 450} - m_SizeDelta: {x: 553, y: 230} + m_AnchoredPosition: {x: 236, y: -703} + m_SizeDelta: {x: 693, y: 657} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &3799337913734479183 MonoBehaviour: @@ -13450,7 +13450,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &3846292517552231573 RectTransform: m_ObjectHideFlags: 0 @@ -13467,8 +13467,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -296, y: -221} - m_SizeDelta: {x: 857, y: 706} + m_AnchoredPosition: {x: 55, y: 487} + m_SizeDelta: {x: 251, y: 128} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &3858189965872713167 GameObject: @@ -13791,7 +13791,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &4113755178945505401 MonoBehaviour: m_ObjectHideFlags: 0 @@ -13880,7 +13880,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: a8162017bc826924ba03d4892302c089, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -14261,7 +14261,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 193d709bfc3242343a0cf465281c06fb, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -14299,7 +14299,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 6962b1c1f19a31845972c18779172da5, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -14386,7 +14386,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 5a5cfdc72f656d04897e86dca291928a, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -14468,7 +14468,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &4481403038795077340 MonoBehaviour: m_ObjectHideFlags: 0 @@ -15033,8 +15033,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -319, y: 99} - m_SizeDelta: {x: 72, y: 101} + m_AnchoredPosition: {x: -328, y: -43} + m_SizeDelta: {x: 249, y: 244} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &4687129193251812523 MonoBehaviour: @@ -15157,7 +15157,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: f21358e35824c2745ab058e58b63383d, type: 3} + m_Sprite: {fileID: 21300000, guid: a618a8edc4f8bda478a5c5cb3ed401da, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -15288,7 +15288,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 75a7f6a399879194e903071946464c66, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -15358,7 +15358,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!1 &4839243781411658002 GameObject: m_ObjectHideFlags: 0 @@ -15398,7 +15398,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 49c27fb504dd01c49b279617181aaebe, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -15568,7 +15568,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &4928535068080016265 CanvasRenderer: m_ObjectHideFlags: 0 @@ -20589,7 +20589,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 945cb568fc5d76345b1171b05d51f800, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -20791,7 +20791,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 5fe377c0a00d12c4b8cc4f3f488c9336, type: 3} + m_Sprite: {fileID: 21300000, guid: 49a67fc97b47d2b4a978e0852286a7f4, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -20819,7 +20819,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!198 &5088254203876396227 ParticleSystem: m_ObjectHideFlags: 0 @@ -25865,8 +25865,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -522, y: -805} - m_SizeDelta: {x: 404, y: 845} + m_AnchoredPosition: {x: -167, y: -206} + m_SizeDelta: {x: 199, y: 113} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &5224306906415107475 GameObject: @@ -25886,7 +25886,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!1 &5234878281634173107 GameObject: m_ObjectHideFlags: 0 @@ -25966,8 +25966,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -198, y: 509} - m_SizeDelta: {x: 169, y: 118} + m_AnchoredPosition: {x: 278, y: 413} + m_SizeDelta: {x: 298, y: 265} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &5256461326053963592 GameObject: @@ -26139,7 +26139,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &5362449590006664389 CanvasRenderer: m_ObjectHideFlags: 0 @@ -26223,7 +26223,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &5434675890026530480 MonoBehaviour: m_ObjectHideFlags: 0 @@ -26274,7 +26274,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: f32dd1323afbcad43aa0ff2cf21ace67, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -26342,7 +26342,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 28ad31c3740771a47bdcea637a5fd891, type: 3} + m_Sprite: {fileID: 21300000, guid: 2882d6d716272284ea8d1da8352fffcd, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -26453,7 +26453,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: a2a7415d49f761547aac1b93e607e502, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -26615,8 +26615,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -206, y: -549} - m_SizeDelta: {x: 297, y: 203} + m_AnchoredPosition: {x: 47, y: -576} + m_SizeDelta: {x: 345, y: 438} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &5664684866857468318 GameObject: @@ -26665,7 +26665,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: f8cff231aa448904a8fbff9f49bb5011, type: 3} + m_Sprite: {fileID: 21300000, guid: f78d477664cfc2c4c96070d7e5981ecd, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -26796,7 +26796,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 6272912ffd5eebe4bb3336b7b50767a1, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -26913,7 +26913,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: bd3ed55ad0552fa4d9c144f6a1c40eb5, type: 3} + m_Sprite: {fileID: 21300000, guid: 5b6a254aed8560e47ba7879b8ebd637a, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -26981,7 +26981,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 0d918e76ba0a22e48a36a9f6317234d8, type: 3} + m_Sprite: {fileID: 21300000, guid: a9bbf2a585cb86948bd2c561c7752323, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -27060,8 +27060,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 39, y: -687} - m_SizeDelta: {x: 1375, y: 1104} + m_AnchoredPosition: {x: 94, y: -83} + m_SizeDelta: {x: 394, y: 142} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &6041883358320429423 CanvasRenderer: @@ -27259,7 +27259,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!114 &6080913578829301525 MonoBehaviour: m_ObjectHideFlags: 0 @@ -27280,7 +27280,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: e234c2268003a1a4794c39cd1a54bf2f, type: 3} + m_Sprite: {fileID: 21300000, guid: 07730d053a04e504ca3b0513efa4a82d, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -27354,7 +27354,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7241b6c24c4eb8d46b194848af30c053, type: 3} + m_Sprite: {fileID: 21300000, guid: 045209c5a9d6fa1499fd9fe55f8bb098, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -27457,7 +27457,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &6149792067285099401 MonoBehaviour: m_ObjectHideFlags: 0 @@ -27478,7 +27478,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 157ef85ee549ac14582460b9c1da07ed, type: 3} + m_Sprite: {fileID: 21300000, guid: c3e5db0153411b048b1faf41bc4985a2, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -27562,8 +27562,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -413, y: 450} - m_SizeDelta: {x: 614, y: 367} + m_AnchoredPosition: {x: -166, y: 320} + m_SizeDelta: {x: 190, y: 198} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &6227573433204654463 CanvasRenderer: @@ -27591,7 +27591,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &6233861377182398600 MonoBehaviour: m_ObjectHideFlags: 0 @@ -27789,7 +27789,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: eaa5a49d06817e3488b00c3838a52a14, type: 3} + m_Sprite: {fileID: 21300000, guid: c61735edb8355ad4ba446160f235527c, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -27815,8 +27815,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -635, y: -45} - m_SizeDelta: {x: 176, y: 100} + m_AnchoredPosition: {x: 0, y: -30} + m_SizeDelta: {x: 1443, y: 863} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &6330145878026948769 RectTransform: @@ -27834,8 +27834,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -100, y: -370} - m_SizeDelta: {x: 845, y: 727} + m_AnchoredPosition: {x: 335, y: -844} + m_SizeDelta: {x: 754, y: 782} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &6345490127396839858 GameObject: @@ -27880,8 +27880,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -665, y: 48} - m_SizeDelta: {x: 114, y: 149} + m_AnchoredPosition: {x: -57, y: 153} + m_SizeDelta: {x: 175, y: 94} m_Pivot: {x: 0.5, y: 0.5} --- !u!198 &6416110056854267040 ParticleSystem: @@ -32806,8 +32806,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 181, y: 480} - m_SizeDelta: {x: 495, y: 462} + m_AnchoredPosition: {x: -190, y: -343} + m_SizeDelta: {x: 204, y: 144} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &6452837529943280468 RectTransform: @@ -32872,7 +32872,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &6463990080728845260 RectTransform: m_ObjectHideFlags: 0 @@ -32889,8 +32889,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 160, y: 184} - m_SizeDelta: {x: 652, y: 498} + m_AnchoredPosition: {x: -364, y: 45} + m_SizeDelta: {x: 198, y: 146} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &6477288947925788041 MonoBehaviour: @@ -32938,8 +32938,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1, y: 468} - m_SizeDelta: {x: 144, y: 183} + m_AnchoredPosition: {x: -430, y: -473} + m_SizeDelta: {x: 510, y: 357} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &6559732684961602569 RectTransform: @@ -33022,7 +33022,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &6611083470496407829 MonoBehaviour: m_ObjectHideFlags: 0 @@ -33161,7 +33161,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &6656773676978711440 MonoBehaviour: m_ObjectHideFlags: 0 @@ -33401,7 +33401,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &6753639473878737932 CanvasRenderer: m_ObjectHideFlags: 0 @@ -33438,7 +33438,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7bf178824e6c8bc4898a92148b285c10, type: 3} + m_Sprite: {fileID: 21300000, guid: a7e02ac4265a07940b734281ef8b95db, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -33468,7 +33468,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: c4011bb095dc74246bc88914ca118320, type: 3} + m_Sprite: {fileID: 21300000, guid: 7ad9e3827eae13140afee6911b975f1f, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -33498,7 +33498,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: d42d4317b0c0a48418eb10703e9775a4, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -33536,7 +33536,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 1d175fbae1a079a4e92b6b18e73e395a, type: 3} + m_Sprite: {fileID: 21300000, guid: 03d0e5dfa8dc56542976930db7de62f5, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -33562,8 +33562,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 52, y: -220} - m_SizeDelta: {x: 307, y: 252} + m_AnchoredPosition: {x: 419, y: -395} + m_SizeDelta: {x: 133, y: 167} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &6898613107147590791 CanvasRenderer: @@ -33591,7 +33591,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &6904842988253004068 RectTransform: m_ObjectHideFlags: 0 @@ -33631,7 +33631,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: c42d85f6ea29f5c43a4b292b9f6eed0c, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -33861,7 +33861,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: -31} - m_SizeDelta: {x: 1232, y: 2048} + m_SizeDelta: {x: 1443, y: 2398} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &7091567780062926393 MonoBehaviour: @@ -33883,7 +33883,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 8d085c97f42ba154b8d78eecccdcdbd0, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -34042,7 +34042,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: eba66ae3766ecb24386f5fa5154a7fd3, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -34068,8 +34068,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -624} - m_SizeDelta: {x: 1443, y: 719} + m_AnchoredPosition: {x: -202, y: -256} + m_SizeDelta: {x: 136, y: 169} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &7207694229844597653 GameObject: @@ -34089,7 +34089,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &7225421269625472581 RectTransform: m_ObjectHideFlags: 0 @@ -34106,8 +34106,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 238, y: 306} - m_SizeDelta: {x: 113, y: 141} + m_AnchoredPosition: {x: 227, y: -915} + m_SizeDelta: {x: 366, y: 429} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &7234226555124421557 GameObject: @@ -34226,8 +34226,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 354, y: -175} - m_SizeDelta: {x: 462, y: 265} + m_AnchoredPosition: {x: -40, y: -539} + m_SizeDelta: {x: 232, y: 457} m_Pivot: {x: 0.5, y: 0.5} --- !u!4 &7258406512895997178 Transform: @@ -34307,7 +34307,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &7276070898602277731 RectTransform: m_ObjectHideFlags: 0 @@ -34347,7 +34347,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 5177dfd2adcd81d41a84beac84a55276, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -34375,7 +34375,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &7310632295919220809 Transform: m_ObjectHideFlags: 0 @@ -39372,7 +39372,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 1a6b1ac7398854d40897c499cf76625b, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -39436,8 +39436,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -604, y: 660} - m_SizeDelta: {x: 234, y: 127} + m_AnchoredPosition: {x: -359, y: 79} + m_SizeDelta: {x: 402, y: 797} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &7416242257337825032 RectTransform: @@ -39455,8 +39455,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -210, y: -487} - m_SizeDelta: {x: 216, y: 167} + m_AnchoredPosition: {x: 533, y: -470} + m_SizeDelta: {x: 265, y: 232} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &7431642395319579513 MonoBehaviour: @@ -39504,8 +39504,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -145, y: 431} - m_SizeDelta: {x: 137, y: 228} + m_AnchoredPosition: {x: -465, y: -966} + m_SizeDelta: {x: 509, y: 532} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &7466007450188310650 RectTransform: @@ -39523,8 +39523,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 219, y: 577} - m_SizeDelta: {x: 549, y: 309} + m_AnchoredPosition: {x: -145, y: -16} + m_SizeDelta: {x: 355, y: 402} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &7467843757489312272 MonoBehaviour: @@ -39546,7 +39546,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 9e5cf318aafaa734898fc211f3d7b7d0, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -39606,8 +39606,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -19, y: -161} - m_SizeDelta: {x: 386, y: 464} + m_AnchoredPosition: {x: 364, y: -30} + m_SizeDelta: {x: 211, y: 174} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &7562978100140407553 CanvasRenderer: @@ -39725,7 +39725,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 418eeb11578924a4092391dd54cc6e60, type: 3} + m_Sprite: {fileID: 21300000, guid: 206fa0557626d2447b8fb8b00b194a02, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -39751,8 +39751,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -347, y: 322} - m_SizeDelta: {x: 156, y: 409} + m_AnchoredPosition: {x: -379, y: 196} + m_SizeDelta: {x: 176, y: 388} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &7694053802235105766 MonoBehaviour: @@ -39875,7 +39875,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: e71116377c5b6a049b33d695f81a23b3, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 1 m_FillCenter: 1 @@ -39947,8 +39947,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -115, y: -415} - m_SizeDelta: {x: 159, y: 127} + m_AnchoredPosition: {x: -325, y: -47} + m_SizeDelta: {x: 211, y: 227} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &7786552815469183107 RectTransform: @@ -39966,8 +39966,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -62, y: 983} - m_SizeDelta: {x: 1316, y: 373} + m_AnchoredPosition: {x: 0, y: -643} + m_SizeDelta: {x: 1443, y: 1166} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &7788226880436393105 CanvasRenderer: @@ -40086,8 +40086,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 344, y: -545} - m_SizeDelta: {x: 234, y: 385} + m_AnchoredPosition: {x: 542, y: 262} + m_SizeDelta: {x: 221, y: 306} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &7866659516913190601 RectTransform: @@ -40105,8 +40105,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 47, y: 155} - m_SizeDelta: {x: 114, y: 145} + m_AnchoredPosition: {x: -211, y: -152} + m_SizeDelta: {x: 136, y: 169} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &7869549256503930786 MonoBehaviour: @@ -40128,7 +40128,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: bb8fd117d8729f64385f268fdc2d2b2b, type: 3} + m_Sprite: {fileID: 21300000, guid: 1d9ba57134181584aaa991de2ad9af3c, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -40162,8 +40162,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -504, y: 453} - m_SizeDelta: {x: 404, y: 280} + m_AnchoredPosition: {x: -36, y: 227} + m_SizeDelta: {x: 140, y: 105} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &7927211234389112227 RectTransform: @@ -40361,8 +40361,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 174, y: 753} - m_SizeDelta: {x: 292, y: 168} + m_AnchoredPosition: {x: 310, y: -35} + m_SizeDelta: {x: 226, y: 503} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &8001670491144219488 MonoBehaviour: @@ -40384,7 +40384,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 4c05f31ea6fb5d444ad2bf89370f4a27, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -45283,7 +45283,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: f2eeffae700650e4b9971bb77ba3beda, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -45415,7 +45415,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &8119466420117804717 MonoBehaviour: m_ObjectHideFlags: 0 @@ -45506,8 +45506,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -499, y: 457} - m_SizeDelta: {x: 443, y: 354} + m_AnchoredPosition: {x: 491, y: 670} + m_SizeDelta: {x: 188, y: 592} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &8162215609484448884 GameObject: @@ -45545,7 +45545,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &8211941108218469767 RectTransform: m_ObjectHideFlags: 0 @@ -45562,8 +45562,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -431, y: 210} - m_SizeDelta: {x: 277, y: 293} + m_AnchoredPosition: {x: -394, y: 185} + m_SizeDelta: {x: 289, y: 410} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &8222673329335772519 GameObject: @@ -45652,7 +45652,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: e37d73dfefb052146bf23993aaa1e6a4, type: 3} + m_Sprite: {fileID: 21300000, guid: bf13ba7e5540e144c92c00ce5a410631, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -45680,7 +45680,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &8269432939744080263 Transform: m_ObjectHideFlags: 0 @@ -45823,7 +45823,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 2d8089608cf3f834dac80e63c01b7ade, type: 3} + m_Sprite: {fileID: 21300000, guid: 46b488f90d2ec214aad35cc6d3e79454, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -45872,7 +45872,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 0044f2590d340aa438fb1ffb3d8c9bf5, type: 3} + m_Sprite: {fileID: 21300000, guid: 77f37fb6c3f03314d97ee28ea0602f8d, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -45965,7 +45965,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: aa32f59dd98b7ff49a11b2f01fcea1a8, type: 3} + m_Sprite: {fileID: 21300000, guid: 27312833ca45ae14884d9531963a6b0c, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -46087,7 +46087,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 8e67fa19a2291d0408e7ef3d0ef3ecad, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -46169,7 +46169,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 0d37f1e2b2252ca479c47820c6072f76, type: 3} + m_Sprite: {fileID: 21300000, guid: 98ec3ae6cd5039e4e81db3ae8fad9b72, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -46454,8 +46454,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 274, y: 4} - m_SizeDelta: {x: 144, y: 197} + m_AnchoredPosition: {x: -358, y: 278} + m_SizeDelta: {x: 208, y: 437} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &8542420992920855127 MonoBehaviour: @@ -46521,7 +46521,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 9e5cf318aafaa734898fc211f3d7b7d0, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -46658,7 +46658,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &8588291065045629082 RectTransform: m_ObjectHideFlags: 0 @@ -46675,8 +46675,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -355, y: 23} - m_SizeDelta: {x: 80, y: 49} + m_AnchoredPosition: {x: -480, y: -273} + m_SizeDelta: {x: 480, y: 343} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &8651269605736674571 MonoBehaviour: @@ -46698,7 +46698,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: d015db8b2481b84468c16070fd5adaae, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -46768,8 +46768,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -363, y: -263} - m_SizeDelta: {x: 715, y: 695} + m_AnchoredPosition: {x: 10, y: -17} + m_SizeDelta: {x: 157, y: 112} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &8732680034442053127 MonoBehaviour: @@ -46853,7 +46853,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 2d739052c91b8ee4180e4b6345410eea, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -46951,7 +46951,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &8814435003632005470 CanvasRenderer: m_ObjectHideFlags: 0 @@ -47041,7 +47041,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!114 &8923975262680150040 MonoBehaviour: m_ObjectHideFlags: 0 @@ -47062,7 +47062,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 1c1c43a102427a54ab2f2e9d6d28d0be, type: 3} + m_Sprite: {fileID: 21300000, guid: 72061ce7adab61b4ba3f6ab2756a5133, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -47188,7 +47188,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: d87ab4ab1c96ff74eb65ac10cc708aff, type: 3} + m_Sprite: {fileID: 21300000, guid: 3ef76b187b97f14468e0e496ddfba613, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -47216,7 +47216,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!222 &8958911409997335002 CanvasRenderer: m_ObjectHideFlags: 0 @@ -47287,7 +47287,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!1 &8983326103208911572 GameObject: m_ObjectHideFlags: 0 @@ -47339,8 +47339,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 211, y: -107} - m_SizeDelta: {x: 229, y: 150} + m_AnchoredPosition: {x: -16, y: -198} + m_SizeDelta: {x: 370, y: 294} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &9002278336685471786 CanvasRenderer: @@ -47410,8 +47410,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 40, y: -244} - m_SizeDelta: {x: 601, y: 551} + m_AnchoredPosition: {x: 73, y: -721} + m_SizeDelta: {x: 241, y: 383} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &9029273531419039036 CanvasRenderer: @@ -47439,7 +47439,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &9044452170505387556 RectTransform: m_ObjectHideFlags: 0 @@ -47479,7 +47479,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: c839c0fcc4f0037479132f230ff82d87, type: 3} + m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -47505,8 +47505,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 303, y: 192} - m_SizeDelta: {x: 114, y: 154} + m_AnchoredPosition: {x: 206, y: -777} + m_SizeDelta: {x: 156, y: 115} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &9057903208345775982 MonoBehaviour: @@ -47676,8 +47676,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 73, y: 17} - m_SizeDelta: {x: 293, y: 224} + m_AnchoredPosition: {x: 228, y: 399} + m_SizeDelta: {x: 409, y: 481} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &9113372621286540682 RectTransform: @@ -47695,8 +47695,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -5, y: -606} - m_SizeDelta: {x: 215, y: 365} + m_AnchoredPosition: {x: -218, y: 121} + m_SizeDelta: {x: 98, y: 93} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &9141345771441125808 RectTransform: @@ -47714,8 +47714,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 567, y: 836} - m_SizeDelta: {x: 308, y: 186} + m_AnchoredPosition: {x: -541, y: -63} + m_SizeDelta: {x: 358, y: 1065} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &9143754210166801216 CanvasRenderer: @@ -47817,8 +47817,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 376, y: -153} - m_SizeDelta: {x: 190, y: 289} + m_AnchoredPosition: {x: 352, y: -806} + m_SizeDelta: {x: 467, y: 837} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &9218458095921239184 MonoBehaviour: @@ -47840,7 +47840,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7c3fb2fa1201eb2448a1c0402060fd3c, type: 3} + m_Sprite: {fileID: 21300000, guid: 0d5e6d5ccaa1cbf4db45223ee6002ae0, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..5e97f83 --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file