diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs index 7055f90..f2e379a 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs @@ -69,8 +69,19 @@ /// /// 当前物体归属的区域, 如果为 null 代表不属于任何一个区域 /// - public AffiliationArea Affiliation { get; set; } - + public AffiliationArea Affiliation + { + get => _affiliationArea; + set + { + if (value != _affiliationArea) + { + _affiliationArea = value; + OnAffiliationChange(); + } + } + } + //组件集合 private List> _components = new List>(); //是否初始化阴影 @@ -96,9 +107,13 @@ //标记字典 private Dictionary _signMap; + //开启的协程 private List _coroutineList; + //模板实例 private ActivityObjectTemplate _templateInstance; + private AffiliationArea _affiliationArea; + private static long _instanceIndex = 0; //初始化节点 @@ -322,6 +337,13 @@ } /// + /// 归属区域发生改变 + /// + protected virtual void OnAffiliationChange() + { + } + + /// /// 返回当物体 CollisionLayer 是否能与 layer 层碰撞 /// public bool CollisionWithLayer(uint layer) diff --git a/DungeonShooting_Godot/src/game/role/Role.cs b/DungeonShooting_Godot/src/game/role/Role.cs index 2855d3e..b05f635 100644 --- a/DungeonShooting_Godot/src/game/role/Role.cs +++ b/DungeonShooting_Godot/src/game/role/Role.cs @@ -290,6 +290,15 @@ } } + protected override void OnAffiliationChange() + { + //身上的武器的所属区域也得跟着变 + Holster.ForEach((weapon, i) => + { + weapon.Affiliation = Affiliation; + }); + } + /// /// 获取当前角色的中心点坐标 ///