LoginSignup
2

More than 5 years have passed since last update.

【Unity】PhotonNetwork.OnEventCallをAsObservableにする【PhotonRx】

Posted at

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って書いてたけどそれだとなぜかイベントが飛んでこなかった。なんでだ。

プルリクは…まぁ、そのうち。。

参考資料

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2