2nd term 7th week - dsuz/csharp GitHub Wiki

今回のテーマ

  • ラムダ式を知ったおかげでできることいろいろ
    1. 配列・リストのデータ処理
    2. DOTween を使ったアニメーション処理
    3. UniRx

準備1

CSharp2-7.zip をダウンロードして展開し、.sln ファイルを Visual Studio で開き、実行してみましょう。

配列・リストのデータ処理

上でダウンロードしたプロジェクトには、ラムダ式を利用した以下の処理の例がある。

  1. 配列・リストの要素を一括で型変換する
  2. 配列・リストに対してループ処理する
  3. 配列・リストに対して条件指定して要素を検索・抽出する
  4. リストを条件に従ってソートする
  5. リストから条件にマッチした要素を削除する

処理の例だけでなく、コメントによる情報も書かれているので、理解もしくは必要な情報は記録しておくこと。

参考資料

準備2

以下のアセットをプロジェクトにインポートする

  1. DOTween(インポート後、セットアップが必要です)
  2. UniRx
  3. CSharp2-7.unitypackage

インポートが終わったら、"Lambda Example" シーンを開いて実行する。

DOTween を使ったアニメーション処理

DOTween はアニメーションを簡単にプログラミングするためのアセットと言われるが、ここで言うアニメーションとは「最終的な値を指定したら、現在の値から連続的に値を変化させ、さらにニュアンス (easing) を加える」というものである。つまり Unity のアニメーションと同じようなものである。

特徴としては、どのようなアニメーションをさせるか指定すると、処理は非同期で実行させることができる。また、アニメーションの指定をメソッド チェーンを使って効率的に書ける。

今回はラムダ式を使った表現(値を滑らかに変化させる・アニメーション完了時に何か処理をさせる)を扱う。それ以外にも簡単に書ける処理がいろいろあるので、どんなことができるかは参考資料を参照してください。

参考資料

課題(10点)

自分の作っているプログラムに DOTween とラムダ式を使った処理を追加せよ。追加したら、GitHub を使ってその箇所のリンクを提出せよ。

例えば、以下のような処理が該当する。

  1. ある値にゲージを減らす・増やす処理がある時、1フレームでいきなりゲージを増減させていたのを、滑らかに増減させる
  2. (特にボーナス等で大幅に)スコアが変化した時、1フレームでその値にいきなり変更していたのを、カウントアップさせるようにする
  3. ステージクリア時などにクリアタイムを表示するような時に、その値をただ表示していたのを、カウントアップさせる
  4. シーン遷移時にフェードしてからシーンをロードする処理を、DOTween を使って書く
    • 「フェードの処理を DOFade() または DOColor() を使って書き、フェードが完了したら OnComplete() を使ってシーンをロードする」ことで簡単に書ける

UniRx

UniRx はおおざっぱに言うと「状態を監視 (Observe) して、状態が変化した時に指定 (Subscribe) した処理を実行させる」ことができる。これを使う事で逐次処理(同期処理)ではできないことをシンプルに記述できる。また、メソッドチェーンを使って効率的にコードを書ける。

参考資料

  1. UniRx/UniTask完全理解正誤表
  2. UniRx の GitHub リポジトリ
  3. UniRx(ユニアールエックス)の基本的な使い方と具体的な利用例
  4. 逆引きUniRx - 使用例から見る使い方