UnityはLuaのコルーチンステートメントブロックに類似したコルーチンを達成します

1  ローカル co_time_tbl = {}
 2  setmetatable(co_time_tbl、{__len = 機能(O)
 3      ローカルカウント= 0 
4      のための K、V における ペア(O)がない
5          カウント=カウント+ 1つの
6      
7      戻りカウント
 8  の端部
9  })
 10  
11  ローカル 関数isWindows()
 12      戻り package.config:サブ(11)== " \\ "
13  端部
14  
15  ローカル 関数スリープ(n)が
 16      であれば(isWindows)次に、
17          であれば、N> 0  、次いで
18              os.execute" ピング-n " .. TONUMBER(N + 1).. " ローカルホスト> NUL " 19          
20      
21          os.execute" スリープ" .. TONUMBER (N))
 22      の端部
23  の端部
24  
25 ローカル 関数の更新(deltaTime)
 26      - メインループ
27  の端部
28  
29  ローカル 関数updateCoroutine()
 30      ローカル iTimeの= os.time ()
 31      用の KCO、VTIME  ペア(co_time_tbl)を行う
32          場合 iTimeの> = VTIME 次いで、
33              であれば コルーチン.status(KCO)== " 中断"  または coroutine.status(KCO)== " 正常"  、次いで
34                  coroutine.resume(KCO)
 35              ELSEIF  coroutine.status(KCO)== " デッド"  次に
36                  co_time_tbl [KCO] = ゼロ
37              の端
38          の端部
39      の端部
40  の端部
41  
42  関数coroutine.waitforSeconds(秒)
 43      アサートタイプ(第2の)== " 番号"  又は第二<= 0 44      ローカル iEndTime = os.time()+ 45      ローカル CO =coroutine.running )(
 46      場合、次いで
47          co_time_tbl [CO] = iEndTime
 48          戻り coroutine.yield ()
 49      の端部
50  の端部
51  
52  ローカル 関数main()の
 53      ローカル CO1 = coroutine.wrap関数()
 54          coroutine.waitforSeconds(5 55          プリント" 5秒後" 56      の端部57      ローカル CO2 =coroutine.wrap関数()
 58          coroutine.waitforSeconds(4 59          プリント" 4秒後" 60      の端部61      ローカル CO3 = coroutine.wrap関数()
 62          coroutine.waitforSeconds(3 63          プリント3後秒" 64      エンド65      ローカルのカウント= 0 
66      ローカル CO4 =coroutine.wrap関数()
 67          
68              (coroutine.waitforSecondsを1 69              のカウント= +カウント1つの
70              印刷" :コルーチンnumは" #co_time_tbl .. " |秒カウント:" ..カウント)
 71          端部
72      端部73      CO1()
 74      CO 2()
 75      CO 3()
 76      CO4()
 77      一方、  DO
78          スリープ(0.033 79          更新()
 80          updateCoroutine()
 81      の端部
82  の端部
83  
84メイン()
コードの表示

 

実際には、アイデアは、ライン上にハングアップしますウェイクアップ時間をコルーチンによると、メインループの後にタイマーを更新し、テーブルで待つコルーチンの時間を維持することです

おすすめ

転載: www.cnblogs.com/0kk470/p/11800447.html