「Unity/UniRx/Subject」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→errorやCompleted処理) |
(→errorやCompleted処理) |
||
行89: | 行89: | ||
subject.OnCompleted(); | subject.OnCompleted(); | ||
</pre> | </pre> | ||
+ | ログ | ||
+ | <pre> | ||
+ | msg1:world | ||
+ | Completed | ||
+ | </pre> | ||
+ | |||
参考:https://www.fast-system.jp/unirx-%E7%9F%A5%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E4%BA%BA%E6%A8%A9%E3%81%8C%E7%84%A1%E3%81%84%E6%B0%97%E3%81%8C%E3%81%97%E3%81%A6%E3%81%8D%E3%81%9F%E3%81%AE%E3%81%A7%E5%8B%89%E5%BC%B7%E3%81%97/ | 参考:https://www.fast-system.jp/unirx-%E7%9F%A5%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E4%BA%BA%E6%A8%A9%E3%81%8C%E7%84%A1%E3%81%84%E6%B0%97%E3%81%8C%E3%81%97%E3%81%A6%E3%81%8D%E3%81%9F%E3%81%AE%E3%81%A7%E5%8B%89%E5%BC%B7%E3%81%97/ | ||
参考:https://light11.hatenadiary.com/entry/2018/11/20/225152 | 参考:https://light11.hatenadiary.com/entry/2018/11/20/225152 |
2021年10月14日 (木) 03:25時点における版
サンプル
using UniRx; Subject<string> subject = new Subject<string>(); // イベント登録 subject.Subscribe(message => Debug.Log("msg1:" + message)); // イベント発行 subject.OnNext("hello");
ログ
msg1:hello
参考:https://qiita.com/toRisouP/items/2f1643e344c741dd94f8
UniRxを使わない場合
上記の処理は、このように書く
using System; Action<string> OnMsg = delegate (string msg) { }; OnMsg += (msg) => { Debug.Log("msg1:" + msg); }; OnMsg("hello");
参考:https://sunagimo-app.hatenablog.com/entry/2019/03/14/032357
値切り替え
Selectを使う
Subject<string> subject = new Subject<string>(); subject .Select( data => "メッセージは" + data ) .Subscribe( message => Debug.Log("msg1:" + message) ); subject.OnNext("hello");
ログ
msg1:メッセージはhello
購読停止
disposable.Dispose()を使う。
Subject<string> subject = new Subject<string>(); // イベント登録 var disposable = subject .Subscribe( message => Debug.Log("msg1:" + message) ); // イベント発行 subject.OnNext("hello"); // 購読停止 disposable.Dispose();
条件
Whereを使う
Subject<string> subject = new Subject<string>(); subject .Where( data => data == "world" ) .Subscribe( message => Debug.Log("msg1:" + message) ); subject.OnNext("hello"); subject.OnNext("world");
worldだけでる。
errorやCompleted処理
Subject<string> subject = new Subject<string>(); subject .Subscribe( message => Debug.Log("msg1:" + message), error => Debug.LogError("Error" + error), () => Debug.Log("Completed") ); subject.OnNext("world"); subject.OnCompleted();
ログ
msg1:world Completed