「Unity/photon/pun1/rpc」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→サンプル) |
(→ターゲット一覧) |
||
(同じ利用者による、間の5版が非表示) | |||
行1: | 行1: | ||
==RPCとは== | ==RPCとは== | ||
リモートプロシージャコールというらしく、 | リモートプロシージャコールというらしく、 | ||
− | + | 情報(intやstring)をその部屋にいる、その他のメンバーに送信できます。 | |
==サンプル== | ==サンプル== | ||
#Roomに入るまでのスクリプトを作成しておく | #Roomに入るまでのスクリプトを作成しておく | ||
− | # | + | #ヒエラルキーの"Main Camera"にPhotonViewをAddComponentする |
− | # | + | #以下RpcViewScene.csを作成し、"Main Camera"にAddComponent登録し実行する |
− | + | *RpcViewScene.cs | |
− | * | + | |
using System.Collections; | using System.Collections; | ||
using System.Collections.Generic; | using System.Collections.Generic; | ||
using UnityEngine; | using UnityEngine; | ||
− | public class | + | public class RpcViewScene : MonoBehaviour |
{ | { | ||
PhotonView photonView = null; | PhotonView photonView = null; | ||
− | void Awake() | + | void Awake() { |
− | + | ||
photonView = GetComponent<PhotonView>(); | photonView = GetComponent<PhotonView>(); | ||
} | } | ||
− | void Start() | + | void Start() { |
− | + | ||
int ownerID = photonView.ownerId; | int ownerID = photonView.ownerId; | ||
} | } | ||
行31: | 行28: | ||
} | } | ||
} | } | ||
− | void SpaceKey() | + | void SpaceKey() { |
− | + | ||
photonView.RPC( "CustomMethod", PhotonTargets.All ); | photonView.RPC( "CustomMethod", PhotonTargets.All ); | ||
} | } | ||
[PunRPC] | [PunRPC] | ||
− | private void CustomMethod() | + | private void CustomMethod() { |
− | + | ||
Debug.Log ("CustomMethod"); | Debug.Log ("CustomMethod"); | ||
} | } | ||
− | void LeftArrowKey() | + | void LeftArrowKey() { |
− | + | ||
object[] args = new object[]{ | object[] args = new object[]{ | ||
"hoge", | "hoge", | ||
行49: | 行43: | ||
} | } | ||
[PunRPC] | [PunRPC] | ||
− | private void Custom2Method(string str, string[] names) | + | private void Custom2Method(string str, string[] names) { |
− | + | ||
Debug.Log ("CustomMethod " + str); | Debug.Log ("CustomMethod " + str); | ||
foreach (string name in names) { | foreach (string name in names) { | ||
行59: | 行52: | ||
spaceキーや左矢印を押すと同じ部屋に入っている相手側にもメッセージが表示される | spaceキーや左矢印を押すと同じ部屋に入っている相手側にもメッセージが表示される | ||
− | + | PhotonTargets.All は全員に送る、その他は以下項目参照 | |
− | PhotonTargets.All | + | |
メソッド実行だけだったり引数を付きでも送ることができる。 | メソッド実行だけだったり引数を付きでも送ることができる。 | ||
==ターゲット一覧== | ==ターゲット一覧== | ||
− | *Photontargets.All // | + | *Photontargets.All // 部屋中の自分含めて全員へ(自分への送信はPhotonサーバを経由しない) |
− | *Photontargets.Others // | + | *Photontargets.Others // 部屋中の自分以外全員へ |
*Photontargets.MasterClient // 部屋のホストにのみ送る | *Photontargets.MasterClient // 部屋のホストにのみ送る | ||
− | *Photontargets.AllViaServer // | + | *Photontargets.AllViaServer // 部屋中の自分含めて全員へ(自分への送信も一旦Photonサーバを経由する) |
− | *Photontargets.AllBufferedViaServer // | + | *Photontargets.AllBufferedViaServer // 部屋中の自分含めて全員へ(自分への送信も一旦Photonサーバを経由する、後で部屋に入ってきたメンバーにも送られる) |
− | *Photontargets.AllBuffered // | + | *Photontargets.AllBuffered // 部屋中の自分含めて全員へ(自分への送信はPhotonサーバを経由しない、後で部屋に入ってきたメンバーにも送られる) |
− | *Photontargets.OthersBuffered // | + | *Photontargets.OthersBuffered // 部屋中の自分以外全員へ(後で部屋に入ってきたメンバーにも送られる) |
*PhotonPlayer.Find(playerId) | *PhotonPlayer.Find(playerId) | ||
+ | |||
+ | 参考:https://doc-api.photonengine.com/ja-jp/pun/current/group__public_api.html | ||
==引数型一覧== | ==引数型一覧== |
2022年6月5日 (日) 03:44時点における最新版
RPCとは
リモートプロシージャコールというらしく、 情報(intやstring)をその部屋にいる、その他のメンバーに送信できます。
サンプル
- Roomに入るまでのスクリプトを作成しておく
- ヒエラルキーの"Main Camera"にPhotonViewをAddComponentする
- 以下RpcViewScene.csを作成し、"Main Camera"にAddComponent登録し実行する
- RpcViewScene.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RpcViewScene : MonoBehaviour { PhotonView photonView = null; void Awake() { photonView = GetComponent<PhotonView>(); } void Start() { int ownerID = photonView.ownerId; } void Update() { if (Input.GetKeyDown (KeyCode.Space)) { SpaceKey (); } if (Input.GetKeyDown (KeyCode.LeftArrow)) { LeftArrowKey (); } } void SpaceKey() { photonView.RPC( "CustomMethod", PhotonTargets.All ); } [PunRPC] private void CustomMethod() { Debug.Log ("CustomMethod"); } void LeftArrowKey() { object[] args = new object[]{ "hoge", new string[] {"taro", "jiro", "saburo"} }; photonView.RPC("Custom2Method", PhotonTargets.All, args); } [PunRPC] private void Custom2Method(string str, string[] names) { Debug.Log ("CustomMethod " + str); foreach (string name in names) { Debug.Log ("CustomMethod name=" + name); } } }
spaceキーや左矢印を押すと同じ部屋に入っている相手側にもメッセージが表示される
PhotonTargets.All は全員に送る、その他は以下項目参照
メソッド実行だけだったり引数を付きでも送ることができる。
ターゲット一覧
- Photontargets.All // 部屋中の自分含めて全員へ(自分への送信はPhotonサーバを経由しない)
- Photontargets.Others // 部屋中の自分以外全員へ
- Photontargets.MasterClient // 部屋のホストにのみ送る
- Photontargets.AllViaServer // 部屋中の自分含めて全員へ(自分への送信も一旦Photonサーバを経由する)
- Photontargets.AllBufferedViaServer // 部屋中の自分含めて全員へ(自分への送信も一旦Photonサーバを経由する、後で部屋に入ってきたメンバーにも送られる)
- Photontargets.AllBuffered // 部屋中の自分含めて全員へ(自分への送信はPhotonサーバを経由しない、後で部屋に入ってきたメンバーにも送られる)
- Photontargets.OthersBuffered // 部屋中の自分以外全員へ(後で部屋に入ってきたメンバーにも送られる)
- PhotonPlayer.Find(playerId)
参考:https://doc-api.photonengine.com/ja-jp/pun/current/group__public_api.html
引数型一覧
byte, int, float, string, byte[], int[], float[],string[] Vecter3, Quaternion
引数タイプについて公式:https://doc.photonengine.com/ja/realtime/current/reference/serialization-in-photon
MasterClientかどうかの確認
PhotonNetwork.isMasterClient