chore(unity): 固定Unity CLI Loop本地包并移除UnitySkills依赖

This commit is contained in:
Liubing\LB
2026-09-28 18:14:59 +08:00
parent 0eb43b2b40
commit c4ae02def9
952 changed files with 70137 additions and 11 deletions

View File

@@ -0,0 +1,70 @@
using System.Threading.Tasks;
namespace io.github.hatayama.uLoopMCP
{
/// <summary>
/// Task related extension methods
/// Provides convenient methods for fire-and-forget async operations
/// </summary>
public static class TaskExtensions
{
/// <summary>
/// Fire-and-forget extension method for Task
/// Equivalent to "_ = task;" but more explicit and readable
/// </summary>
/// <param name="task">Task to fire and forget</param>
public static void Forget(this Task task)
{
if (task == null) return;
// Handle exceptions to prevent crashes
_ = HandleTaskExceptions(task);
}
/// <summary>
/// Handle task exceptions to prevent unhandled exceptions in fire-and-forget scenarios
/// </summary>
private static async Task HandleTaskExceptions(Task task)
{
try
{
await task;
}
catch (System.Exception ex)
{
// Log the exception to prevent silent failures
UnityEngine.Debug.LogException(ex);
}
}
/// <summary>
/// Fire-and-forget extension method for DelayFrameAwaitable
/// Allows writing: EditorDelay.DelayFrame().Forget()
/// </summary>
/// <param name="awaitable">DelayFrameAwaitable to fire and forget</param>
public static void Forget(this DelayFrameAwaitable awaitable)
{
// Convert to Task and discard using consistent pattern
ConvertToTask(awaitable).Forget();
}
/// <summary>
/// Convert DelayFrameAwaitable to Task for fire-and-forget operations
/// Includes exception handling to prevent unobserved task exceptions in fire-and-forget scenarios
/// </summary>
private static async Task ConvertToTask(DelayFrameAwaitable awaitable)
{
try
{
await awaitable;
}
catch (System.Exception ex)
{
// Log the exception to prevent silent failures
UnityEngine.Debug.LogException(ex);
// Intentionally swallow exceptions in fire-and-forget scenarios
// to prevent unobserved task exceptions from crashing the application
}
}
}
}