From 2d4b3cfd96f10120e34b52a44e7652226f7662ad Mon Sep 17 00:00:00 2001 From: Joywayer Date: Mon, 20 Jul 2026 16:42:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(wizard):=20=E6=95=8C=E4=BA=BA/Boss=20?= =?UTF-8?q?=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=A4=96=E8=A7=82=20Sprite=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=B9=B6=E9=80=8F=E4=BC=A0=E7=BB=99=E8=84=9A?= =?UTF-8?q?=E6=89=8B=E6=9E=B6(=E7=A2=B0=E6=92=9E=E4=BD=93=E5=B0=BA?= =?UTF-8?q?=E5=AF=B8=E4=BE=9D=E6=8D=AE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/Character/CharacterWizardWindow.cs | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/Assets/_Game/Scripts/Editor/Character/CharacterWizardWindow.cs b/Assets/_Game/Scripts/Editor/Character/CharacterWizardWindow.cs index b193c760..345576d3 100644 --- a/Assets/_Game/Scripts/Editor/Character/CharacterWizardWindow.cs +++ b/Assets/_Game/Scripts/Editor/Character/CharacterWizardWindow.cs @@ -62,6 +62,7 @@ namespace BaseGames.Editor // 小怪类型选择 — 具体敌人类型 private int _enemyTypeIndex = 0; private SceneObjectPlacerTool.EnemyBodyColliderType _enemyBodyCollider = SceneObjectPlacerTool.EnemyBodyColliderType.Box; + private Sprite _defaultSprite; // 敌人/Boss 默认外观 Sprite:碰撞体尺寸依据(可留空) private static readonly (string id, string name)[] EnemyTypes = { ("E001", "草蛭"), @@ -298,9 +299,14 @@ namespace BaseGames.Editor colliderField.RegisterValueChangedCallback(evt => _enemyBodyCollider = (SceneObjectPlacerTool.EnemyBodyColliderType)evt.newValue); container.Add(colliderField); + var spriteField = new UnityEditor.UIElements.ObjectField("默认外观 Sprite(碰撞体尺寸依据,可留空)") + { objectType = typeof(Sprite), allowSceneObjects = false, value = _defaultSprite }; + spriteField.RegisterValueChangedCallback(evt => _defaultSprite = evt.newValue as Sprite); + container.Add(spriteField); + var sceneGroup = MakeActionGroup(); string sceneLabel = $"放置 {id} {name} 到场景"; - sceneGroup.Add(MakeSceneButton(sceneLabel, () => PlaceSpecificEnemy(id, _enemyBodyCollider))); + sceneGroup.Add(MakeSceneButton(sceneLabel, () => PlaceSpecificEnemy(id, _enemyBodyCollider, _defaultSprite))); sceneGroup.Add(MakeSceneButton("迁移选中对象 Visual 节点", MigrateSelectedEnemyVisualNode)); container.Add(sceneGroup); } @@ -340,8 +346,14 @@ namespace BaseGames.Editor root.Add(MakeSectionHeader("▶ 场景搭建")); root.Add(MakeHelpBox("放置嘲风完整组件树(ChaoFengBoss + 浮空控制器 + 击倒计数 + Phase1 HitBox × 4 + 炮口 × 3)。")); + var bossSpriteField = new UnityEditor.UIElements.ObjectField("默认外观 Sprite(碰撞体尺寸依据,可留空)") + { objectType = typeof(Sprite), allowSceneObjects = false, value = _defaultSprite }; + bossSpriteField.RegisterValueChangedCallback(evt => _defaultSprite = evt.newValue as Sprite); + root.Add(bossSpriteField); + var sceneGroup = MakeActionGroup(); - sceneGroup.Add(MakeSceneButton("放置嘲风到场景并绑定 SO", SceneObjectPlacerTool.PlaceChaoFeng)); + sceneGroup.Add(MakeSceneButton("放置嘲风到场景并绑定 SO", + () => SceneObjectPlacerTool.PlaceChaoFeng(SceneObjectPlacerTool.EnemyBodyColliderType.Box, _defaultSprite))); sceneGroup.Add(MakeSceneButton("迁移选中对象 Visual 节点", MigrateSelectedEnemyVisualNode)); root.Add(sceneGroup); @@ -617,19 +629,19 @@ namespace BaseGames.Editor $"全部 {id} SO 已创建(已存在的跳过)。\n请放置到场景后检查组件绑定。", "确定"); } - private static void PlaceSpecificEnemy(string id, SceneObjectPlacerTool.EnemyBodyColliderType bodyCollider) + private static void PlaceSpecificEnemy(string id, SceneObjectPlacerTool.EnemyBodyColliderType bodyCollider, Sprite defaultSprite) { switch (id) { - case "E001": SceneObjectPlacerTool.PlaceE001_CaoZhi(bodyCollider); break; - case "E002": SceneObjectPlacerTool.PlaceE002_HuangZhi(bodyCollider); break; - case "E003": SceneObjectPlacerTool.PlaceE003_YouZhi_Enemy(bodyCollider); break; - case "E004": SceneObjectPlacerTool.PlaceE004_ZhiMu_Enemy(bodyCollider); break; - case "E005": SceneObjectPlacerTool.PlaceE005_FeiZhi_Enemy(bodyCollider); break; - case "E006": SceneObjectPlacerTool.PlaceE006_Huan(bodyCollider); break; + case "E001": SceneObjectPlacerTool.PlaceE001_CaoZhi(bodyCollider, defaultSprite); break; + case "E002": SceneObjectPlacerTool.PlaceE002_HuangZhi(bodyCollider, defaultSprite); break; + case "E003": SceneObjectPlacerTool.PlaceE003_YouZhi_Enemy(bodyCollider, defaultSprite); break; + case "E004": SceneObjectPlacerTool.PlaceE004_ZhiMu_Enemy(bodyCollider, defaultSprite); break; + case "E005": SceneObjectPlacerTool.PlaceE005_FeiZhi_Enemy(bodyCollider, defaultSprite); break; + case "E006": SceneObjectPlacerTool.PlaceE006_Huan(bodyCollider, defaultSprite); break; default: Debug.LogError($"[CharacterWizardWindow] 未注册的敌人 id '{id}',请在 SceneObjectPlacerTool 中实现对应 PlaceE...() 方法并注册。"); - SceneObjectPlacerTool.PlaceEnemy(bodyCollider); + SceneObjectPlacerTool.PlaceEnemy(bodyCollider, defaultSprite); break; } }