【Unity】メインスレッドに処理を委託する

目次

使用ケース

Unityは、UIまわりをプログラムから変更するときに、メインスレッドで処理をする必要があります。

別スレッドでUIを更新しようとすると、エラーになってしまいます。

メインスレッドで処理をする

SynchronizationContextを使用する

定義

1
2
3
4
5
6
7
SynchronizationContext context;

void Start()
{
// Startはメインスレッドで実行されるので、その時のスレッドをストアする。
context = SynchronizationContext.Current;
}

使用方法

1
2
3
4
5
6
7
8
9
10
private async void Function()
{
// ... 非同期処理

// 確保したSynchronizationContextを使ってメインスレッドに処理を戻す
context.Post(_ =>
{
// メインスレッドで実行したいコード
}, null);
}
Author

Daiki Iijima

Posted on

2021-08-25

Updated on

2024-04-17

Licensed under