2nd term 7th week - dsuz/csharp GitHub Wiki
今回のテーマ
- ラムダ式を知ったおかげでできることいろいろ
- 配列・リストのデータ処理
- DOTween を使ったアニメーション処理
- UniRx
準備1
CSharp2-7.zip をダウンロードして展開し、.sln ファイルを Visual Studio で開き、実行してみましょう。
配列・リストのデータ処理
上でダウンロードしたプロジェクトには、ラムダ式を利用した以下の処理の例がある。
- 配列・リストの要素を一括で型変換する
- 配列・リストに対してループ処理する
- 配列・リストに対して条件指定して要素を検索・抽出する
- リストを条件に従ってソートする
- リストから条件にマッチした要素を削除する
処理の例だけでなく、コメントによる情報も書かれているので、理解もしくは必要な情報は記録しておくこと。
参考資料
- [完全版]究極のC#プログラミング ――新スタイルによる実践的コーディング
- delegate の仕組みは C# のバージョン 1.0 からあった。ジェネリック、匿名メソッド、System.Action, System.Func はバージョン 2 で、ラムダ式と LINQ は C# のバージョン 3 で追加された。基本的な C# の使い方はわかった上で LINQ 等の新機能を学びたい場合はこの本が都合がよい。
- Web 版として 究極のC#プログラミング と、その元となった C# 3.0 入門 がある
- 実戦で役立つ C#プログラミングのイディオム/定石&パターン
- リストに対するラムダ式の利用について載っているが、配列に対するラムダ式の利用は載っていない
準備2
以下のアセットをプロジェクトにインポートする
- DOTween(インポート後、セットアップが必要です)
- UniRx
- CSharp2-7.unitypackage
インポートが終わったら、"Lambda Example" シーンを開いて実行する。
DOTween を使ったアニメーション処理
DOTween はアニメーションを簡単にプログラミングするためのアセットと言われるが、ここで言うアニメーションとは「最終的な値を指定したら、現在の値から連続的に値を変化させ、さらにニュアンス (easing) を加える」というものである。つまり Unity のアニメーションと同じようなものである。
特徴としては、どのようなアニメーションをさせるか指定すると、処理は非同期で実行させることができる。また、アニメーションの指定をメソッド チェーンを使って効率的に書ける。
今回はラムダ式を使った表現(値を滑らかに変化させる・アニメーション完了時に何か処理をさせる)を扱う。それ以外にも簡単に書ける処理がいろいろあるので、どんなことができるかは参考資料を参照してください。
参考資料
- DOTweenの教科書(一部無料公開されています)
- DOTweenのイージング一覧
課題(10点)
自分の作っているプログラムに DOTween とラムダ式を使った処理を追加せよ。追加したら、GitHub を使ってその箇所のリンクを提出せよ。
例えば、以下のような処理が該当する。
- ある値にゲージを減らす・増やす処理がある時、1フレームでいきなりゲージを増減させていたのを、滑らかに増減させる
- (特にボーナス等で大幅に)スコアが変化した時、1フレームでその値にいきなり変更していたのを、カウントアップさせるようにする
- ステージクリア時などにクリアタイムを表示するような時に、その値をただ表示していたのを、カウントアップさせる
- シーン遷移時にフェードしてからシーンをロードする処理を、DOTween を使って書く
- 「フェードの処理を DOFade() または DOColor() を使って書き、フェードが完了したら OnComplete() を使ってシーンをロードする」ことで簡単に書ける
UniRx
UniRx はおおざっぱに言うと「状態を監視 (Observe) して、状態が変化した時に指定 (Subscribe) した処理を実行させる」ことができる。これを使う事で逐次処理(同期処理)ではできないことをシンプルに記述できる。また、メソッドチェーンを使って効率的にコードを書ける。