feat(cordis): 完成阶段5配置与调试工具

This commit is contained in:
2026-08-17 01:58:46 +08:00
parent 8738e633ee
commit 5765f411e9
29 changed files with 1322 additions and 18 deletions
@@ -1,5 +1,6 @@
#if UNITY_EDITOR
using ShrinkApp.Editor;
using ShrinkContext.AppAdapter;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
@@ -10,6 +11,8 @@ namespace ShrinkApp.Starter.Basic.Editor
public static class ShrinkAppBasicStarterGenerator
{
private const string MenuPath = "ShrinkApp/Starter/生成 Basic Entry 场景";
private const string CompositionMenuPath = "ShrinkApp/Starter/创建默认 Cordis Composition";
private const string CompositionPath = "Assets/Resources/ShrinkAppComposition.asset";
[MenuItem(MenuPath)]
public static void Generate()
@@ -21,13 +24,34 @@ namespace ShrinkApp.Starter.Basic.Editor
Debug.Log("[ShrinkApp.Starter.Basic] 已生成 Basic Entry 场景与配置。");
}
[MenuItem(CompositionMenuPath)]
public static void CreateDefaultCompositionAsset()
{
EnsureResourcesDirectory();
var existing = AssetDatabase.LoadAssetAtPath<ShrinkAppCompositionProfile>(CompositionPath);
if (existing != null)
{
Selection.activeObject = existing;
return;
}
// 修复脚本/asmdef 变更期间可能留下的无主 .asset,而不是在同一路径叠加创建。
if (!string.IsNullOrEmpty(AssetDatabase.AssetPathToGUID(CompositionPath)))
AssetDatabase.DeleteAsset(CompositionPath);
var composition = ScriptableObject.CreateInstance<ShrinkAppCompositionProfile>();
composition.SetDocument(ShrinkAppBasicContextComposition.CreateDefaultDocument());
AssetDatabase.CreateAsset(composition, CompositionPath);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Selection.activeObject = composition;
}
private static void EnsureAssets()
{
ShrinkAppEditorMenu.CreateSettingsAsset();
const string resourcesDir = "Assets/Resources";
if (!AssetDatabase.IsValidFolder(resourcesDir))
AssetDatabase.CreateFolder("Assets", "Resources");
EnsureResourcesDirectory();
const string dataSaverSettingsPath = "Assets/Resources/ShrinkDataSaverSettings.asset";
if (AssetDatabase.LoadAssetAtPath<ScriptableObject>(dataSaverSettingsPath) == null)
@@ -51,6 +75,15 @@ namespace ShrinkApp.Starter.Basic.Editor
starterAsset.maxCommandOutputLines = 12;
AssetDatabase.CreateAsset(starterAsset, starterSettingsPath);
}
CreateDefaultCompositionAsset();
}
private static void EnsureResourcesDirectory()
{
const string resourcesDir = "Assets/Resources";
if (!AssetDatabase.IsValidFolder(resourcesDir))
AssetDatabase.CreateFolder("Assets", "Resources");
}
private static void BuildScene()