Its*_*oco 0 c# networking unity-game-engine photon unity5
这是一个愚蠢的问题,但我无法弄清楚,我尝试查看它,但没有什么是我想要的,所以我认为询问可能是一个好方法。在我的游戏中,我希望客户端能够向房间中的每个人发送消息(不是为用户发送的消息,如果不是为其他客户端解释为代码):
“(用户1):每个人有多少分?”
“(用户 2):嘿,我得了 5 分”
“(用户 3):嘿,我得了 10 分”
“(用户1):时间到了,说说你的观点:”
“(用户 2):嘿,我得了 20 分”
“(用户 3):嘿,我得了 30 分”
“(用户 1):用户 3 赢了”
当然,这更像是一个图形示例,我想要的是能够向所有客户端(在房间内)发送消息,以便其他客户端可以处理 tjem。我想知道怎么做,以及这是否是一个可能的低谷 PUN(Unity Photon Network)。或者,如果有其他方法可以通过 UnityNetworking 执行此操作。此外,这将通过 LAN 而不是通过 Internet。
先谢谢了。
您正在寻找 RPC:
https://doc.photonengine.com/en-us/pun/current/gameplay/rpcsandraiseevent
这允许您仅调用主、仅客户端或特定播放器。
在您放置“[PunRPC]”的函数之前(没有 qoutes),这使得该方法可以被 RPC 调用:
[PunRPC]
public void GetScore(int score)
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
调用 RPC 的类需要从 Pohotn.PunBehaviour 附加或扩展一个光子视图,并调用函数如下:
photonView.RPC("function", targets, arguments);
Run Code Online (Sandbox Code Playgroud)
“函数”是作为字符串的 rpc,在示例中它是 GetScore,目标可以是 PhotonPlayer 实例,也可以使用 PhotonTargets 枚举。
我喜欢创建一个处理 RPC 的单例类(请记住,这仅在类只有 1 个实例时才有效):
using UnityEngine;
public class RPC : Photon.PunBehaviour
{
public static RPC singleton;
private void Awake()
{
if(singleton != null && singleton != this)
Destroy(this);
singleton = this;
}
//Called by someone who wants to set the score
public void CallSetScore(sbyte score)
{
this.photonView.RPC("SetScore", PhotonTargets.All, score);
}
[PunRPC]
public void SetScore(sbyte score)
{
//Do something with the score
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3395 次 |
| 最近记录: |