「Unity/UniRx/Subject」の版間の差分
ナビゲーションに移動
検索に移動
| 30行目: | 30行目: | ||
参考:https://sunagimo-app.hatenablog.com/entry/2019/03/14/032357 | 参考:https://sunagimo-app.hatenablog.com/entry/2019/03/14/032357 | ||
== | ==条件== | ||
Whereを使う | |||
<pre> | <pre> | ||
Subject<string> subject = new Subject<string>(); | Subject<string> subject = new Subject<string>(); | ||
| 44行目: | 45行目: | ||
</pre> | </pre> | ||
worldだけでる。 | worldだけでる。 | ||
==errorやCompleted処理== | |||
<pre> | |||
Subject<string> subject = new Subject<string>(); | |||
subject | |||
.Subscribe( | |||
message => Debug.Log("msg1:" + message), | |||
error => Debug.LogError("Error" + error), | |||
() => Debug.Log("Completed") | |||
); | |||
subject.OnNext("world"); | |||
</pre> | |||
2021年10月13日 (水) 17:24時点における版
サンプル
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
条件
Whereを使う
Subject<string> subject = new Subject<string>();
subject
.Where(
m => m == "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");