第10回:マイクロスレッド
詳しくというか補足
前回はマイクロスレッドについて説明しました。今回はそれの補足です。
とりあえず使用できる場所です。
普通、マイクロスレッドはscript_enemy_mainの{}の中に直接作られます。
そのためあまり気づかれませんが、作成した場所によっては使えない場合があります。
それは、マイクロスレッド(または関数)を作成した{}の外で呼び出した時です。
例を使って説明しましょう。
script_enemy_main{
@Initialize
{
taskA; ←taskAの起動
}
@MainLoop
{
yield;
}
@Finalize
{
}
task taskA
{
yield;
taskB; ←taskBの起動
(処理)
task taskB
{
(処理)
}
}
}
これだと何の問題もなく使えます。
では、これだとどうでしょう。
script_enemy_main{
@Initialize
{
taskA; ←taskAの起動
taskB; ←taskBの起動
}
@MainLoop
{
yield;
}
@Finalize
{
}
task taskA
{
yield;
(処理)
task taskB
{
(処理)
}
}
}
taskBを起動する場所を変えただけですが、これだとエラーが出てうまく動作しません。
それは、taskBを作成したtaskAの{}の外でtaskBを使っているからです。
taskBをtaskAの{}の中で起動する、もしくはtaskBをtaskAの{}の外で作るかすれば、エラーは出なくなります。
最後にまとめです。
マイクロスレッドとは、
- 1. 関数の機能を拡張したものとしてみてもよい
- 2. 同時にいくつも起動することが出来る
- 3. [yield]は1フレーム待機の命令として考えてよい
- 4. マイクロスレッド内で[yield]を使うと、多フレームにわたって処理を続けることが出来る
- 5. マイクロスレッドを使うと、同時に複数の処理を並行して行うことが出来る
というものです。
これだけ覚えれば(ちょっとやる分には)OKです。
マイクロスレッドを使うことが出来るようになれば、基本的にどんなスクリプトでも
作ることが出来るようになります。
次回からは、これまでの講座の内容を使って、原作弾幕の再現をしていきましょう。