第10回

prev slash top slash next

第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です。
マイクロスレッドを使うことが出来るようになれば、基本的にどんなスクリプトでも
作ることが出来るようになります。
次回からは、これまでの講座の内容を使って、原作弾幕の再現をしていきましょう。


top
prev slash next
inserted by FC2 system