File tree 2 files changed +87
-0
lines changed
2 files changed +87
-0
lines changed Original file line number Diff line number Diff line change @@ -93,4 +93,39 @@ public interface IActor : IWorker
93
93
/// <param name="serverDay">服务器运行天数,表示服务器运行的累计天数</param>
94
94
/// <returns>一个表示异步操作的任务</returns>
95
95
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 ) ;
96
131
}
Original file line number Diff line number Diff line change @@ -227,6 +227,58 @@ public async Task CrossDay(int openServerDay)
227
227
}
228
228
}
229
229
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
+
230
282
/// <summary>
231
283
/// 反激活所有组件,使其进入非活动状态
232
284
/// </summary>
You can’t perform that action at this time.
0 commit comments