unity 从主线程调用的示例
时间: 2024-12-25 10:24:55 浏览: 4
Unity引擎中,为了保证游戏的顺畅运行并避免阻塞主线程,通常会将耗时的操作放在Worker Thread(工作线程)上。以下是一个简单的示例,展示如何在Unity中从主线程向工作线程发送任务,并在完成后再回调到主线程:
```csharp
using System.Collections;
using UnityEngine;
using UnityEngine.Threading;
public class MainThreadExample : MonoBehaviour
{
public WorkerThread workerThread; // 工作线程组件引用
void Start()
{
StartCoroutine(ExecuteLongTask());
}
IEnumerator ExecuteLongTask()
{
Debug.Log("Starting long task on background thread...");
yield return new WaitWhile(() => !workerThread.IsRunning); // 等待工作线程开始
// 发送异步任务
Task.Run(() =>
{
DoExpensiveComputation(); // 耗时计算
InvokeOnMainThread(CallbackMethod); // 回调主线程执行
});
while (!workerThread.IsCompleted) yield return null; // 监控任务是否完成
}
[SerializeField] private void CallbackMethod() // 主线程回调函数
{
Debug.Log("Long task completed. Back on main thread.");
}
private void DoExpensiveComputation() // 需要在工作线程执行的任务
{
// ... 这里放置你的耗时操作
}
}
阅读全文