Skip to content

Commit dfb51be

Browse files
committed
[增加]1. 增加获取组件的是否新建的参数
1 parent ca25f43 commit dfb51be

File tree

2 files changed

+71
-61
lines changed

2 files changed

+71
-61
lines changed
Lines changed: 59 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,79 @@
1-
namespace GameFrameX.Core.Abstractions.Agent;
2-
3-
/// <summary>
4-
/// 组件代理接口
5-
/// </summary>
6-
public interface IComponentAgent : IWorker
7-
{
8-
/// <summary>
9-
/// 获取Actor的唯一标识
1+
namespace GameFrameX.Core.Abstractions.Agent;
2+
3+
/// <summary>
4+
/// 组件代理接口
5+
/// </summary>
6+
public interface IComponentAgent : IWorker
7+
{
8+
/// <summary>
9+
/// 获取Actor的唯一标识
1010
/// <remarks>
1111
/// 用于唯一标识一个Actor实例的ID值
1212
/// </remarks>
13-
/// </summary>
14-
long ActorId { get; }
15-
16-
/// <summary>
17-
/// 获取或设置组件的所有者
13+
/// </summary>
14+
long ActorId { get; }
15+
16+
/// <summary>
17+
/// 获取或设置组件的所有者
1818
/// <remarks>
1919
/// 表示当前组件所属的父级组件实例
2020
/// </remarks>
21-
/// </summary>
22-
IComponent Owner { get; }
23-
24-
/// <summary>
25-
/// 获取所有者的类型
21+
/// </summary>
22+
IComponent Owner { get; }
23+
24+
/// <summary>
25+
/// 获取所有者的类型
2626
/// <remarks>
2727
/// 表示所有者组件的类型标识,使用ushort类型存储
2828
/// </remarks>
29-
/// </summary>
30-
ushort OwnerType { get; }
31-
32-
/// <summary>
33-
/// 设置组件的所有者
34-
/// </summary>
29+
/// </summary>
30+
ushort OwnerType { get; }
31+
32+
/// <summary>
33+
/// 设置组件的所有者
34+
/// </summary>
3535
/// <param name="owner">所有者组件实例</param>
3636
/// <remarks>
3737
/// 用于设置或更改当前组件的所有者,建立组件间的从属关系
3838
/// </remarks>
39-
void SetOwner(IComponent owner);
40-
41-
/// <summary>
42-
/// 激活组件代理
39+
void SetOwner(IComponent owner);
40+
41+
/// <summary>
42+
/// 激活组件代理
4343
/// <remarks>
4444
/// 用于初始化并启用组件代理的功能
4545
/// </remarks>
46-
/// </summary>
47-
void Active();
48-
49-
/// <summary>
50-
/// 反激活组件代理
51-
/// </summary>
52-
/// <returns>一个表示异步操作的任务</returns>
46+
/// </summary>
47+
void Active();
48+
49+
/// <summary>
50+
/// 反激活组件代理
51+
/// </summary>
52+
/// <returns>一个表示异步操作的任务</returns>
5353
/// <remarks>
5454
/// 用于停用组件代理并清理相关资源,这是一个异步操作
5555
/// </remarks>
56-
Task Inactive();
57-
58-
/// <summary>
59-
/// 根据代理类型获取代理组件
60-
/// </summary>
61-
/// <param name="agentType">代理类型</param>
62-
/// <returns>代理组件</returns>
63-
public Task<IComponentAgent> GetComponentAgent(Type agentType);
64-
65-
/// <summary>
66-
/// 根据泛型代理类型获取代理组件
67-
/// </summary>
68-
/// <typeparam name="T">代理组件的类型</typeparam>
69-
/// <returns>代理组件</returns>
70-
public Task<T> GetComponentAgent<T>() where T : IComponentAgent;
56+
Task Inactive();
57+
58+
/// <summary>
59+
/// 根据代理类型获取代理组件
60+
/// </summary>
61+
/// <param name="agentType">代理类型</param>
62+
/// <param name="isNew">是否创建新实例,默认为true</param>
63+
/// <returns>代理组件实例</returns>
64+
/// <remarks>
65+
/// 通过Type类型参数获取或创建对应的组件代理实例
66+
/// </remarks>
67+
public Task<IComponentAgent> GetComponentAgent(Type agentType, bool isNew = true);
68+
69+
/// <summary>
70+
/// 根据泛型代理类型获取代理组件
71+
/// </summary>
72+
/// <typeparam name="T">代理组件的类型</typeparam>
73+
/// <param name="isNew">是否创建新实例,默认为true</param>
74+
/// <returns>指定类型的代理组件实例</returns>
75+
/// <remarks>
76+
/// 泛型方法版本,用于获取或创建指定类型的组件代理实例
77+
/// </remarks>
78+
public Task<T> GetComponentAgent<T>(bool isNew = true) where T : IComponentAgent;
7179
}

GameFrameX.Core/Hotfix/Agent/BaseComponentAgent.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,23 +84,25 @@ public virtual Task Inactive()
8484
}
8585

8686
/// <summary>
87-
/// 根据代理类型获取组件
87+
/// 根据代理类型获取组件代理实例
8888
/// </summary>
89-
/// <param name="agentType">代理类型</param>
90-
/// <returns>一个任务,返回组件代理实例</returns>
91-
public Task<IComponentAgent> GetComponentAgent(Type agentType)
89+
/// <param name="agentType">要获取的代理类型</param>
90+
/// <param name="isNew">是否创建新的实例,true表示创建新实例,false表示获取已存在的实例</param>
91+
/// <returns>返回一个异步任务,该任务完成时将返回指定类型的组件代理实例</returns>
92+
public Task<IComponentAgent> GetComponentAgent(Type agentType, bool isNew = true)
9293
{
93-
return Actor.GetComponentAgent(agentType);
94+
return Actor.GetComponentAgent(agentType, isNew);
9495
}
9596

9697
/// <summary>
97-
/// 根据代理类型获取组件代理
98+
/// 获取指定泛型类型的组件代理实例
9899
/// </summary>
99-
/// <typeparam name="T">代理类型</typeparam>
100-
/// <returns>一个任务,返回指定类型的组件代理实例</returns>
101-
public Task<T> GetComponentAgent<T>() where T : IComponentAgent
100+
/// <typeparam name="T">要获取的组件代理类型,必须实现IComponentAgent接口</typeparam>
101+
/// <param name="isNew">是否创建新的实例,true表示创建新实例,false表示获取已存在的实例</param>
102+
/// <returns>返回一个异步任务,该任务完成时将返回指定泛型类型的组件代理实例</returns>
103+
public Task<T> GetComponentAgent<T>(bool isNew = true) where T : IComponentAgent
102104
{
103-
return Actor.GetComponentAgent<T>();
105+
return Actor.GetComponentAgent<T>(isNew);
104106
}
105107

106108
/// <summary>

0 commit comments

Comments
 (0)