unityで関数型言語ぽく書く 如法会#1

12
Unityで関数型言語ぽく書く @csc_kamera25 如法会#1

Upload: takahiro-nakaoku

Post on 23-Jan-2017

105 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Unityで関数型言語ぽく書く   如法会#1

Unityで関数型言語ぽく書く@csc_kamera25 如法会#1

Page 2: Unityで関数型言語ぽく書く   如法会#1

2

● 広島Unity勉強会 の中の人● フリーTPSとか作ってます(@CrowSullCore)

● Twitter : @csc_kamera25● Github : kamera25● ブログ : http://religion.indiesj.com/

自己紹介

Page 3: Unityで関数型言語ぽく書く   如法会#1

UniRx - https://github.com/neuecc/UniRx

Page 4: Unityで関数型言語ぽく書く   如法会#1

何が出来る?

・リアクティブプログラミング(Reactive Extensions)がUnityでできる。

・最近のプログラミングパラダイムらしい。

・フレームごとの処理をあらかじめ宣言しておく。

・Update()にそれぞれの変数をみて、処理をするように書かない。

・コルーチンの延長のような感じ。

Page 5: Unityで関数型言語ぽく書く   如法会#1

using UnityEngine;using UniRx;

~以下、コード~

using で読み込み

Page 6: Unityで関数型言語ぽく書く   如法会#1

public class Counter : MonoBehaviour{ void Awake () { IObservable<long> updateStream = Observable.EveryUpdate(); updateStream.Subscribe (count => Debug.Log (count)); }}

public class Counter : MonoBehaviour{ int count = 0; void Update () {

Debug.Log( ++0); }}

=

ノーマルな書き方

UniRxな書き方

Page 7: Unityで関数型言語ぽく書く   如法会#1

Awake()この関数は常に Start 関数の前およびプレハブのインスタンス化直後に呼び出されます。

Update()Updateはフレームごとに一度呼び出されます。これは、フレームのアップデートのメインとなる関数です。

繰り返し

Rxでは、初期にふるまいを記入する。

Page 8: Unityで関数型言語ぽく書く   如法会#1

public class Counter : MonoBehaviour{ void Awake () { IObservable<long> updateStream = Observable.EveryUpdate(); updateStream.Subscribe (count => Debug.Log (count)); }}

毎フレーム監視するぞ。

updateStream

Page 9: Unityで関数型言語ぽく書く   如法会#1

public class Counter : MonoBehaviour{ void Awake () { IObservable<long> updateStream = Observable.EveryUpdate(); updateStream.Subscribe (count => Debug.Log (count)); }}

0count <long>

Debug.log()

フレームが来た

OnNext()③

1

Page 10: Unityで関数型言語ぽく書く   如法会#1

public class Click: MonoBehaviour{ void Awake () { IObservable<long> clickStream = Observable .EveryUpdate() .Where (_ => Input.GetMouseButtonDown (0));

clickStream.Subscribe (_ => Debug.Log ("Clicked!")); }}

Where()によって、実行の条件をつける。

フレームが来た Where()右クリックが押されてる?

Debug.log()

Page 11: Unityで関数型言語ぽく書く   如法会#1

参考&引用

・「UniRxを使ってみた。マウスクリックの回数を数える - RyotaMurohoshi」

http://qiita.com/RyotaMurohoshi/items/7e1509e03d8e3a1eae4f

・「Update()をObservableに変換する方法 - toRisouP」

http://qiita.com/toRisouP/items/972b97367df12c3457d2

Page 12: Unityで関数型言語ぽく書く   如法会#1

ご静聴ありがとうございました。