From 04f644969b05ae5e32ca16fa6069d76de4eeb698 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Wed, 29 Jul 2026 14:36:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(ai):=20AiRecipeSO.OnEnable=20=E6=94=B9=20pr?= =?UTF-8?q?otected=20virtual=EF=BC=8C=E9=98=B2=E5=AD=90=E7=B1=BB=E9=9D=99?= =?UTF-8?q?=E9=BB=98=E9=81=AE=E8=94=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 留作 private 时,子类另写一个 OnEnable 会遮蔽它(Unity 只调最派生的), PlayModeResetHook 注册从此不发生且零报错——关闭域重载下即表现为 "改了配方进 Play 仍跑旧图"。T13 的 PerceptionRecipeSO 是第一个子类, 在它出现前先堵住。 Co-Authored-By: Claude Opus 5 (1M context) --- Assets/_Game/Scripts/AI/AiRecipeSO.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Assets/_Game/Scripts/AI/AiRecipeSO.cs b/Assets/_Game/Scripts/AI/AiRecipeSO.cs index 935211f0..779274ec 100644 --- a/Assets/_Game/Scripts/AI/AiRecipeSO.cs +++ b/Assets/_Game/Scripts/AI/AiRecipeSO.cs @@ -11,7 +11,12 @@ namespace BaseGames.AI { AiGraph _cached; - void OnEnable() + /// + /// 子类若要自己的 OnEnable,必须 override 本方法并调 base.OnEnable()—— + /// 声明成 protected virtual 正是为此:若留作 private,子类另写一个 OnEnable 会 + /// 静默遮蔽它(Unity 只调最派生的那个),缓存清理从此不再注册且无任何报错。 + /// + protected virtual void OnEnable() { // 项目已关闭 Domain Reload:SO 的运行时态在多次 Play 会话间会残留, // 改了配方再进 Play 仍用旧图。登记到统一的"进入 Play 前重置"通道。