UniRx(github)
UniRx(アセットストア)
PhotonRx
なさそうだったから書いた
PhotonRx 使い始めたけど PhotonNetwork.OnEventCall をObservableにする機能が見当たらなかったから自分で書いた。
PhotonExtensions.cs
namespace UniRx
{
public static class PhotonExtensions
{
public static IObservable<Tuple<byte, object, int>> AsObservable(this PhotonNetwork.EventCallback eventCallback)
{
return Observable.FromEvent<PhotonNetwork.EventCallback, Tuple<byte, object, int>>(
h => (x, y, z) => h(Tuple.Create(x, y, z)),
h => PhotonNetwork.OnEventCall += h,
h => PhotonNetwork.OnEventCall -= h
);
}
}
}
// 使い方
PhotonNetwork.OnEventCall
.AsObservable()
.Subscribe(tuple =>
{
var eventCode = tuple.Item1;
var content = tuple.Item2;
var senderId = tuple.Item3;
Debug.Log("OnEventCall");
});
PhotonNetwork.OnEventCall
になってる箇所は最初eventCallback
って書いてたけどそれだとなぜかイベントが飛んでこなかった。なんでだ。
プルリクは…まぁ、そのうち。。
参考資料
- 【Unity】僕もPhotonを使いたい #10 RaiseEvent: Photon使う上でこのシリーズの記事が一番良かった
-
UniRxのObservable.FromEventを使う:毎回
FromEvent
の使い方忘れてこの記事見てしまう