@
fix(enemy): 撞墙检测层默认 Platform+Wall(策划可配) + 修 Physics2D 层矩阵落盘 - EnemyMovement._wallMask:本就 [SerializeField] 暴露在 Inspector,补 Tooltip 说明为策划可配的撞墙检测层(巡逻翻边/追击冲刺共用,按碰撞体前缘);脚手架 PlaceE001 默认赋 Platform+Wall,prefab 同步。原先 Nothing→回退 groundMask, 漏检 Wall 层墙;现显式含 Wall。回退逻辑保留作未配置兜底。 - Physics2DLayerReport.SavePhysicsSettings:原实现(AssetDatabase.SaveAssets+ 改 defaultContactOffset)不落盘层矩阵——实测 Physics2D.IgnoreLayerCollision 的 改动 SaveToSerializedFileAndForget(单例) 也捕获不到;改用 File/Save Project (实测 hash 变化确认落盘,且不触动打开场景)。Auto Fix 的矩阵修正现能立即持久化。 (说明:Enemy×Player 碰撞矩阵与报告 ExpectedPairs 此前已正确=忽略,无需改动; 地图障碍物层管理/冲刺可穿透障碍另行整体规划。) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
This commit is contained in:
@@ -517,6 +517,7 @@ namespace BaseGames.Editor
|
||||
AssignLayerMask(movement, "_groundMask",
|
||||
new[] { "Platform", "OneWayPlatform", "MovingOneWayPlatform", "MidHeightOneWayPlatform" },
|
||||
report);
|
||||
AssignLayerMask(movement, "_wallMask", new[] { "Platform", "Wall" }, report); // 撞墙判定层(策划可调)
|
||||
|
||||
AssignAsset(chaseAbility, "_config", report, false, "ABL_E001_Chase");
|
||||
AssignReference(chaseAbility, "_contactDamage", bodyContact, report);
|
||||
|
||||
@@ -201,15 +201,16 @@ namespace BaseGames.Editor
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过 SerializedObject 修改 ProjectSettings/Physics2DSettings.asset 以持久化 Physics2D 层矩阵。
|
||||
/// Unity 在退出时也会自动保存,但显式调用可立即落盘。
|
||||
/// 立即把 Physics2D 层碰撞矩阵改动落盘到 ProjectSettings/Physics2DSettings.asset。
|
||||
/// <see cref="Physics2D.IgnoreLayerCollision"/> 只改内存态,Unity 默认要等编辑器退出/进 Play/手动
|
||||
/// Save Project 才持久化。经实测:SaveToSerializedFileAndForget(单例) 不会捕获运行时 IgnoreLayerCollision
|
||||
/// 的改动;Save Project 会(且不触动打开的场景)。故此处触发 Save Project 强制落盘。
|
||||
/// </summary>
|
||||
private static void SavePhysicsSettings()
|
||||
{
|
||||
// Unity 内部会在下一次 AssetDatabase 刷新时持久化 Physics2D 设置
|
||||
// 使用 Physics2DLayerMatrix 写入后刷新即可
|
||||
AssetDatabase.SaveAssets();
|
||||
Physics2D.defaultContactOffset = Physics2D.defaultContactOffset; // 强制标记 dirty
|
||||
if (!EditorApplication.ExecuteMenuItem("File/Save Project"))
|
||||
Debug.LogWarning("[Physics2DLayerReport] Save Project 执行失败,层矩阵改动未立即落盘" +
|
||||
"(Unity 仍会在退出/进 Play 时保存)。");
|
||||
}
|
||||
|
||||
// ── 内部数据结构 ─────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user