diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index e638ed1..5bbbe0f 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -94,10 +94,11 @@
         {
             if (value != _affiliationArea)
             {
+                var prev = _affiliationArea;
                 _affiliationArea = value;
                 if (!IsDestroyed)
                 {
-                    OnAffiliationChange();
+                    OnAffiliationChange(prev);
                 }
             }
         }
@@ -591,7 +592,8 @@
     /// <summary>
     /// 归属区域发生改变
     /// </summary>
-    protected virtual void OnAffiliationChange()
+    /// <param name="prevArea">上一个区域, 注意可能为空</param>
+    protected virtual void OnAffiliationChange(AffiliationArea prevArea)
     {
     }
 
@@ -1490,6 +1492,11 @@
     /// </summary>
     public void BecomesStaticImage()
     {
+        if (_processingBecomesStaticImage)
+        {
+            return;
+        }
+        
         if (AffiliationArea == null)
         {
             GD.PrintErr($"调用函数: BecomesStaticImage() 失败, 物体{Name}没有归属区域, 无法确定绘制到哪个ImageCanvas上, 直接执行销毁");
@@ -1497,11 +1504,6 @@
             return;
         }
 
-        if (_processingBecomesStaticImage)
-        {
-            return;
-        }
-
         _processingBecomesStaticImage = true;
         EnableBehavior = false;
         var staticImageCanvas = AffiliationArea.RoomInfo.StaticImageCanvas;
diff --git a/DungeonShooting_Godot/src/framework/map/image/ImageCanvas.cs b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas.cs
index 842349b..4373220 100644
--- a/DungeonShooting_Godot/src/framework/map/image/ImageCanvas.cs
+++ b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas.cs
@@ -106,6 +106,7 @@
         if (item.RenderWidth >= RenderViewportSize.X)
         {
             GD.PrintErr($"图像旋转后的宽度大于{RenderViewportSize.X}, 不支持绘制到 ImageCanvas 下!");
+            item.SrcImage.Dispose();
             return;
         }
         
diff --git a/DungeonShooting_Godot/src/framework/map/image/ImageCanvas_Static.cs b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas_Static.cs
index 9f1e3ff..867235f 100644
--- a/DungeonShooting_Godot/src/framework/map/image/ImageCanvas_Static.cs
+++ b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas_Static.cs
@@ -35,7 +35,7 @@
     /// </summary>
     public static Vector2I RenderViewportSize { get; private set; }
     
-    //预渲染队列, 这里不用 Queue 是因为大图尝试添加到渲染队列可能失败, 为了不影响
+    //预渲染队列, 这里不用 Queue 是因为大图尝试添加到渲染队列可能失败, 为了不影响渲染顺序, 所以使用 List
     private static readonly List<ImageRenderData> _queueItems = new List<ImageRenderData>();
     //渲染中的队列
     private static readonly Queue<ImageRenderData> _drawingQueueItems = new Queue<ImageRenderData>();
diff --git a/DungeonShooting_Godot/src/framework/map/image/ImageRenderData.cs b/DungeonShooting_Godot/src/framework/map/image/ImageRenderData.cs
index c6a4f79..3087bd9 100644
--- a/DungeonShooting_Godot/src/framework/map/image/ImageRenderData.cs
+++ b/DungeonShooting_Godot/src/framework/map/image/ImageRenderData.cs
@@ -83,5 +83,8 @@
     /// 渲染在 viewport 上中心点y轴偏移量
     /// </summary>
     public int RenderOffsetY;
+    /// <summary>
+    /// 占用区域
+    /// </summary>
     public ImageCanvas.AreaPlaceholder AreaPlaceholder;
 }
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs
index 7782cee..23604aa 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs
@@ -522,7 +522,7 @@
         }
     }
     
-    protected override void OnAffiliationChange()
+    protected override void OnAffiliationChange(AffiliationArea prevArea)
     {
         //身上的武器的所属区域也得跟着变
         WeaponPack.ForEach((weapon, i) =>