Unity2Dでマス目上のワールドのデータを作成しています
C#
1//マップのサイズ 2int mapX=1000; 3int mapY=1000; 4 5//マップのデータを格納する 6int[,] mapType = new int[mapX,mapY]; 7 8void loadMethod(){ 9 //マップのシード値を設定 10 float seed = UnityEngine.Random.value; 11 12 for(int i=0;i<mapX;i++){ 13 for(int j=0;j<mapY;j++){ 14 //処理が重めのマップ生成メソッド 15 //mapTypeをいじる 16 heavyGenerationMethod(i,j,seed); 17 18 //planeオブジェクトに色をつけている 19 tex2d.SetPixel(i,j,judgeTypeColor(mapType[i,j])); 20 } 21 } 22} 23 24Color judgeTypeColor(int maptype){ 25//タイプに応じた色を返す 26}
この二重ループの処理が重いので、別のスレッドで実行したいのですが、非同期処理のやり方が分かりません
c#
1//軽めにする 2int mapX=10; 3int mapY=10; 4 5void Start(){ 6 Task.Run(() => loadMethod); 7}
と書いても反応がない(エラーも吐かない)ので困っています
C#
1 tex2d.SetPixel(i,j,judgeTypeColor(mapType[i,j]));
↑この処理は重くない上に、おそらくUnityがSetPixelをメインスレッドで実行するように言ってくるので、heavyGenerationMethodとは分けて書きたいですのですが、可能でしょうか
また、二重ループの中で進捗(n%生成完了)などの表示をする方法はありますでしょうか
初心者なので、見当違いなことを書いているかもしれませんが、ご教授いただけたらありがたいです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/02 01:59
2020/02/18 20:03