Godot C# 运行 在后台
Godot C# Running in the background
我想要一个非常昂贵的 C# 脚本在玩主场景游戏时 运行 在后台。
作为代码的预期工作流程示例:
- 睡 3 秒
- 在关卡场景中创建并显示 tilemap 实例
- 睡 3 秒
- 用一些新的精灵更新瓦片地图
休眠时间从来都不是恒定的,也无法提前知道:它们是算法。
我想避免:
- C# 代码为 运行
时游戏挂起
运行 CPU 任务中的密集型代码将防止主 UI 线程锁定。
您应该阅读 Microsoft 的 基于异步的介绍
编程.
这是我认为您想要的示例:
static async void DoHeavyWork()
{
//Starts a new Task that will NOT block the UI thread.
await Task.Run(async () =>
{
//This simulates the heavy task.
await Task.Delay(3000);
await Dispatcher.BeginInvoke(() =>
{
//Run code on the UI thread here.
});
await Task.Delay(3000);
});
}
如果这对您有帮助,请将此答案标记为解决方案,我将不胜感激。
我想要一个非常昂贵的 C# 脚本在玩主场景游戏时 运行 在后台。
作为代码的预期工作流程示例:
- 睡 3 秒
- 在关卡场景中创建并显示 tilemap 实例
- 睡 3 秒
- 用一些新的精灵更新瓦片地图
休眠时间从来都不是恒定的,也无法提前知道:它们是算法。
我想避免:
- C# 代码为 运行 时游戏挂起
运行 CPU 任务中的密集型代码将防止主 UI 线程锁定。
您应该阅读 Microsoft 的 基于异步的介绍 编程.
这是我认为您想要的示例:
static async void DoHeavyWork()
{
//Starts a new Task that will NOT block the UI thread.
await Task.Run(async () =>
{
//This simulates the heavy task.
await Task.Delay(3000);
await Dispatcher.BeginInvoke(() =>
{
//Run code on the UI thread here.
});
await Task.Delay(3000);
});
}
如果这对您有帮助,请将此答案标记为解决方案,我将不胜感激。