Skip to content

Commit a8f9772

Browse files
committed
[增加]1. 增加组件代理的激活和反激活前后的函数调用
1 parent 0365331 commit a8f9772

File tree

4 files changed

+67
-0
lines changed

4 files changed

+67
-0
lines changed

GameFrameX.Core/Abstractions/Agent/IComponentAgent.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ public interface IComponentAgent : IWorker
3838
/// </remarks>
3939
void SetOwner(IComponent owner);
4040

41+
/// <summary>
42+
/// 组件激活前的回调方法
43+
/// </summary>
44+
/// <returns>表示异步操作的任务</returns>
45+
/// <remarks>
46+
/// 在组件开始激活流程前执行,可以用于进行一些预处理操作
47+
/// </remarks>
48+
Task BeforeActivation();
49+
4150
/// <summary>
4251
/// 激活组件代理
4352
/// <remarks>
@@ -46,6 +55,24 @@ public interface IComponentAgent : IWorker
4655
/// </summary>
4756
Task Active();
4857

58+
/// <summary>
59+
/// 组件激活后的回调方法
60+
/// </summary>
61+
/// <returns>表示异步操作的任务</returns>
62+
/// <remarks>
63+
/// 在组件完成激活流程后执行,可以用于处理一些初始化后的逻辑
64+
/// </remarks>
65+
Task AfterActivation();
66+
67+
/// <summary>
68+
/// 组件反激活前的回调方法
69+
/// </summary>
70+
/// <returns>表示异步操作的任务</returns>
71+
/// <remarks>
72+
/// 在组件开始反激活流程前执行,可以用于保存状态或清理资源
73+
/// </remarks>
74+
Task BeforeInActivation();
75+
4976
/// <summary>
5077
/// 反激活组件代理
5178
/// </summary>
@@ -55,6 +82,15 @@ public interface IComponentAgent : IWorker
5582
/// </remarks>
5683
Task Inactive();
5784

85+
/// <summary>
86+
/// 组件反激活后的回调方法
87+
/// </summary>
88+
/// <returns>表示异步操作的任务</returns>
89+
/// <remarks>
90+
/// 在组件完成反激活流程后执行,可以用于确认清理完成或执行最终操作
91+
/// </remarks>
92+
Task AfterInActivation();
93+
5894
/// <summary>
5995
/// 根据代理类型获取代理组件
6096
/// </summary>

GameFrameX.Core/Actors/Actor.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ async Task Worker()
149149

150150
try
151151
{
152+
await agent.AfterActivation();
152153
await agent.Active();
154+
await agent.BeforeActivation();
153155
}
154156
catch (Exception e)
155157
{
@@ -184,7 +186,9 @@ async Task Worker()
184186

185187
try
186188
{
189+
await agent.AfterActivation();
187190
await agent.Active();
191+
await agent.BeforeActivation();
188192
}
189193
catch (Exception e)
190194
{

GameFrameX.Core/Components/BaseComponent.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ public virtual async Task Inactive()
8686
var agent = GetAgent();
8787
if (agent != null)
8888
{
89+
await agent.AfterInActivation();
8990
await agent.Inactive();
91+
await agent.BeforeInActivation();
9092
}
9193

9294
IsActive = false;

GameFrameX.Core/Hotfix/Agent/BaseComponentAgent.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,33 @@ public void SetOwner(IComponent owner)
6767
Owner = owner;
6868
}
6969

70+
/// <summary>
71+
/// 组件激活前的预处理操作
72+
/// </summary>
73+
/// <returns>一个已完成的任务</returns>
74+
public virtual Task BeforeActivation() => Task.CompletedTask;
75+
7076
/// <summary>
7177
/// 激活组件
7278
/// </summary>
79+
/// <returns>一个已完成的任务</returns>
7380
public virtual Task Active()
7481
{
7582
return Task.CompletedTask;
7683
}
7784

85+
/// <summary>
86+
/// 组件激活后的后处理操作
87+
/// </summary>
88+
/// <returns>一个已完成的任务</returns>
89+
public virtual Task AfterActivation() => Task.CompletedTask;
90+
91+
/// <summary>
92+
/// 组件反激活前的预处理操作
93+
/// </summary>
94+
/// <returns>一个已完成的任务</returns>
95+
public virtual Task BeforeInActivation() => Task.CompletedTask;
96+
7897
/// <summary>
7998
/// 反激活组件
8099
/// </summary>
@@ -84,6 +103,12 @@ public virtual Task Inactive()
84103
return Task.CompletedTask;
85104
}
86105

106+
/// <summary>
107+
/// 组件反激活后的后处理操作
108+
/// </summary>
109+
/// <returns>一个已完成的任务</returns>
110+
public virtual Task AfterInActivation() => Task.CompletedTask;
111+
87112
/// <summary>
88113
/// 根据代理类型获取组件代理实例
89114
/// </summary>

0 commit comments

Comments
 (0)