Files
XRLib/Assets/Scripts/UVC/Event/UniTaskEventHandler.cs

59 lines
2.1 KiB
C#
Raw Normal View History

2025-06-04 23:10:11 +09:00
using Cysharp.Threading.Tasks;
namespace UVC.Event
{
/// <summary>
/// <20>񵿱<EFBFBD> <20>̺<EFBFBD>Ʈ ó<><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
/// UniTask<73><6B> <20><>ȯ<EFBFBD>ϴ<EFBFBD> <20>̺<EFBFBD>Ʈ <20>ڵ鷯<DAB5><E9B7AF> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20>񵿱<EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><> <20>ְ<EFBFBD> <20><>
/// </summary>
/// <typeparam name="TEventArgs"><3E>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>׸<EFBFBD> Ÿ<><C5B8> <20>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><EFBFBD></typeparam>
/// <param name="sender"><3E>̺<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߻<EFBFBD><DFBB><EFBFBD>Ų <20><>ü</param>
/// <param name="e"><3E>̺<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>õ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns><3E>񵿱<EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> UniTask</returns>
/// <example>
/// <code>
/// // <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// public class NetworkManager
/// {
/// // UniTaskEventHandler Ÿ<><C5B8><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
/// public event UniTaskEventHandler<DataReceivedEventArgs> OnDataReceived;
///
/// // <20>̺<EFBFBD>Ʈ <20>߻<EFBFBD> <20>޼ҵ<DEBC>
/// public async UniTask RaiseDataReceivedEvent(DataReceivedEventArgs args)
/// {
/// if (OnDataReceived != null)
/// {
/// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϵ<EFBFBD> <20>ڵ鷯<DAB5><E9B7AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// foreach (var handler in OnDataReceived.GetInvocationList())
/// {
/// await ((UniTaskEventHandler<DataReceivedEventArgs>)handler).Invoke(this, args);
/// }
/// }
/// }
/// }
///
/// // <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// public class DataProcessor
/// {
/// public void Initialize(NetworkManager networkManager)
/// {
/// networkManager.OnDataReceived += HandleDataReceived;
/// }
///
/// private async UniTask HandleDataReceived(object sender, DataReceivedEventArgs e)
/// {
/// // <20>񵿱<EFBFBD> <20>̺<EFBFBD>Ʈ ó<><C3B3> <20><><EFBFBD><EFBFBD>
/// await ProcessDataAsync(e.Data);
/// }
///
/// private async UniTask ProcessDataAsync(byte[] data)
/// {
/// await UniTask.Delay(100); // <20><><EFBFBD><EFBFBD> <20>񵿱<EFBFBD> <20>۾<EFBFBD>
/// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD>
/// }
/// }
/// </code>
/// </example>
public delegate UniTask UniTaskEventHandler<TEventArgs>(object sender, TEventArgs e);
}