devlog [naru design]

プログラミングやテクニカルな内容の覚え書き。

コルーチンを使ったサンプル。

毎フレーム実行したい場合はUpdate()メソッド内に記述すれば良いが、フレームレートとは別の周期で何かを実行したい場合には、コルーチンの仕組みを使うと容易に実現できる。

サンプルの内容

unity-coroutine

画面にはStartとStopの2つのボタン。
Startをクリックすると、シーンに0.5秒ごとに立方体を追加し続ける(コルーチンが動き出す)。
Stopをクリックすると、立方体の追加が停止する(コルーチンが停止する)。
シーンに追加された立方体は、5〜10秒後に消える。
カメラが原点を中心にY軸周りに回転する。

立方体のプレハブを作成

シーンに追加される立方体をプレハブとして作成します。
HierarchyウィンドウでCube(GameObject)を追加する。名前はCubeのまま。
ProjectウィンドウでC#スクリプトを作成し、名前をCubeに設定する。

10行目:1秒間に回転する角度をランダムで決定(15〜60度)
11行目:回転方向がランダムに見えるよう、Z軸をランダムに回転しておく
12行目:5〜10秒後にゲームオブジェクトを削除する
17行目:予め決めた回転角度に従ってY軸回転(フレームの経過時間を考慮するために、Time.deltaTimeをかける)

Cube.csをHierarchyウィンドウのCubeへ追加する。
HierarchyのCubeをプレハブにする(HierarchyウィンドウのCubeをProjectウィンドウへドラッグアンドドロップ)。

ボタンの追加

Hierarchyにボタン用のEmpty(GameObject)を追加し、名前をMyGUIに変更する。
ProjectウィンドウでGUI用にC#スクリプトを作成し、スクリプト名をMyGUIに設定する。

13−20行目:コルーチンを開始するStartボタン、コルーチンの開始はStartCoroutin()メソッド
21-29行目:コルーチンを停止するStopボタン、コルーチンの停止はStopCoroutine()メソッド
32-39行目:コルーチンの定義、yield return new WaitForSeconds()で待ち時間を設定

MyGUI.csをHierarchyウィンドウのMyGUIへ追加する。
HierarchyウィンドウのMyGUIを選択した状態で、InspectorウィンドウのMyGUI(Script)のCubeへ立方体のプレハブ(Cube)を設定する。

ライトを追加

Hierarchyウィンドウで、Directional Lightを追加する。

カメラを自動的に回転

カメラが原点を中心にして回転するように設定する。
ProjectウィンドウでC#スクリプトを作成し、スクリプト名をRotateCameraに設定する。

8行目:原点を中心にして、Y軸周りに40度/秒回転させる

RotateCamera.csをHierarchyウィンドウのMain Cameraに追加する。

実行結果

Pocket

コメントは受け付けていません。

Trackback URL: