File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -93,4 +93,39 @@ public interface IActor : IWorker
9393 /// <param name="serverDay">服务器运行天数,表示服务器运行的累计天数</param>
9494 /// <returns>一个表示异步操作的任务</returns>
9595 Task CrossDay ( int serverDay ) ;
96+
97+ /// <summary>
98+ /// 设置Actor的数据
99+ /// </summary>
100+ /// <typeparam name="T">要存储的数据类型</typeparam>
101+ /// <param name="key">数据的键名</param>
102+ /// <param name="value">要存储的数据值</param>
103+ /// <remarks>
104+ /// 用于在Actor中存储任意类型的数据,通过键值对的方式进行管理。
105+ /// 如果键已存在,则会覆盖原有的值。
106+ /// </remarks>
107+ void SetData < T > ( string key , T value ) ;
108+
109+ /// <summary>
110+ /// 获取Actor中存储的数据
111+ /// </summary>
112+ /// <typeparam name="T">要获取的数据类型</typeparam>
113+ /// <param name="key">数据的键名</param>
114+ /// <returns>返回指定类型的数据值</returns>
115+ /// <remarks>
116+ /// 如果指定的键不存在或类型不匹配,可能会抛出异常。
117+ /// 使用前建议先确认数据是否存在。
118+ /// </remarks>
119+ T GetData < T > ( string key ) ;
120+
121+ /// <summary>
122+ /// 移除Actor中存储的数据
123+ /// </summary>
124+ /// <param name="key">要移除的数据键名</param>
125+ /// <returns>如果成功移除数据返回true,如果键不存在返回false</returns>
126+ /// <remarks>
127+ /// 从Actor的数据存储中移除指定键的数据。
128+ /// 如果键不存在,则不会产生任何效果。
129+ /// </remarks>
130+ bool RemoveData ( string key ) ;
96131}
Original file line number Diff line number Diff line change @@ -227,6 +227,58 @@ public async Task CrossDay(int openServerDay)
227227 }
228228 }
229229
230+ private readonly ConcurrentDictionary < string , object > _data = new ConcurrentDictionary < string , object > ( ) ;
231+
232+ /// <summary>
233+ /// 设置Actor的数据
234+ /// </summary>
235+ /// <typeparam name="T">要存储的数据类型</typeparam>
236+ /// <param name="key">数据的键名</param>
237+ /// <param name="value">要存储的数据值</param>
238+ /// <remarks>
239+ /// 用于在Actor中存储任意类型的数据,通过键值对的方式进行管理。
240+ /// 如果键已存在,则会覆盖原有的值。
241+ /// </remarks>
242+ public void SetData < T > ( string key , T value )
243+ {
244+ _data [ key ] = value ;
245+ }
246+
247+ /// <summary>
248+ /// 获取Actor中存储的数据
249+ /// </summary>
250+ /// <typeparam name="T">要获取的数据类型</typeparam>
251+ /// <param name="key">数据的键名</param>
252+ /// <returns>返回指定类型的数据值</returns>
253+ /// <remarks>
254+ /// 如果指定的键不存在或类型不匹配,可能会抛出异常。
255+ /// 使用前建议先确认数据是否存在。
256+ /// </remarks>
257+ public T GetData < T > ( string key )
258+ {
259+ if ( _data . TryGetValue ( key , out var value ) )
260+ {
261+ return ( T ) value ;
262+ }
263+
264+ return default ;
265+ }
266+
267+
268+ /// <summary>
269+ /// 移除Actor中存储的数据
270+ /// </summary>
271+ /// <param name="key">要移除的数据键名</param>
272+ /// <returns>如果成功移除数据返回true,如果键不存在返回false</returns>
273+ /// <remarks>
274+ /// 从Actor的数据存储中移除指定键的数据。
275+ /// 如果键不存在,则不会产生任何效果。
276+ /// </remarks>
277+ public bool RemoveData ( string key )
278+ {
279+ return _data . TryRemove ( key , out _ ) ;
280+ }
281+
230282 /// <summary>
231283 /// 反激活所有组件,使其进入非活动状态
232284 /// </summary>
You can’t perform that action at this time.
0 commit comments