ユーザ用ツール

サイト用ツール


unity2d:co-routine

文書の過去の版を表示しています。


<markdown> #コルーチンについて

##概要 特徴として通常の関数とは異なり、処理を途中で抜けて任意のタイミングで中断部分から処理を再開できる。 例えば、初心者の方が「キャラクターを1フレームに1ドットずつ100 ドット動かす」といった場合、下記のようにしてしまうことがあります。

for(int i=1; i<100; i++){   myChar.MoveToRight(1); }

これでは結果的に失敗で、これを実行すると1フレームで100ドット右に動いてしまいます。 ところが、「yeild」を1行入れることで、1フレームに1ドットずつ100ドット動かすことが出来るようになります。

for(int i=1; i<100; i++){   myChar.MoveToRight(1);   yeild return 0; }

「yeild」を使用することで、関数の実行を一時的に中断し、次回にその関数が呼び出されたときにその続きを実行することが出来ます。 内部的には、オブジェクト指向のイテレータとなるため「IEnumerator」を使う。この機能により状態変数を減らせることが出来て便利です。

[Unityで覚えるC# SlideShare](http://www.slideshare.net/lucifuges/unityc) ![コルーチンスライド](http://yaju.sakura.ne.jp/wiki/images/unity10/co-routine.png)

【参考】 [マイクロスレッド](https://web.archive.org/web/20130522010427/http:/www44.atwiki.jp/pioswiki/pages/33.html) [[VB]遅れてやってきたYield その5](http://blogs.wankuma.com/yaju/archive/2012/12/24/310310.aspx)

##コルーチンの準備 ###シーンの読み込み UnityChan2Dのプロジェクトを使用して、コルーチンの動きを確認してみましょう。 UnityChan2D→Assets→Scenesにある「Introduction Demo」をクリックして、シーンの読み込みを行ってください。

![プロジェクト1](http://yaju.sakura.ne.jp/wiki/images/unity10/co-routine2.png)  ![シーン1](http://yaju.sakura.ne.jp/wiki/images/unity10/co-routine3.png)

UnityChan2D→Demo→SpritesのCoin.pngをUnityChan2D→Spritesにコピーします。 Inspectorにて「Sprite Mode」を「Multiple」、「Pixels Per Unit」を「16」にします。 Sprite Editorにて「Type」をGridに変更、「Size」をX 16 Y 16で「Slice」ボタンを押下後、Applyします。

![スプライト1](http://yaju.sakura.ne.jp/wiki/images/unity10/co-routine4.png)  ![インスペクター1](http://yaju.sakura.ne.jp/wiki/images/unity10/co-routine5.png) ![スプライトエディタ1](http://yaju.sakura.ne.jp/wiki/images/unity10/co-routine6.png) </markdown>

unity2d/co-routine.1455447516.txt.gz · 最終更新: 2016/02/14 19:58 by yajuadmin