C# 基于光子统一回合的多人骰子游戏和同步视图
我用一个骰子创建了一个场景,玩家将依次点击骰子,这将改变骰子的颜色。首先,我创建了一个房间,一名玩家加入了房间并进入了游戏场景。直到这里一切都很好。但是当玩家1(主机)点击骰子时,玩家2没有看到骰子移动。我在inspector中添加了光子变换视图,下面是我的代码:C# 基于光子统一回合的多人骰子游戏和同步视图,c#,unity3d,photon,C#,Unity3d,Photon,我用一个骰子创建了一个场景,玩家将依次点击骰子,这将改变骰子的颜色。首先,我创建了一个房间,一名玩家加入了房间并进入了游戏场景。直到这里一切都很好。但是当玩家1(主机)点击骰子时,玩家2没有看到骰子移动。我在inspector中添加了光子变换视图,下面是我的代码: void Update() { turnBaseGame(); } public void turnBaseGame() { PhotonView photo
void Update()
{
turnBaseGame();
}
public void turnBaseGame()
{
PhotonView photonView = PhotonView.Get(this);
photonView.RPC("OnMouseDown", RpcTarget.All);
}
[PunRPC]
public void OnMouseDown()
{
if (Input.GetMouseButtonDown(0))
{
// color change
}
}
我正在使用OnMouseDown功能单击骰子,但游戏场景中两个玩家的骰子都没有同步。我希望骰子显示在两个屏幕上,每当一个玩家点击骰子,颜色会改变,它应该显示在其他玩家的屏幕上。然后在下一轮中,另一名玩家也会这样做。请帮我解决这个问题。
谢谢您应该为localPlayer和RemotePlayer提供不同的方法 检查photonView.IsMine,如果IsMine==true,则在本地调用方法并使用RpcTargets通知远程。全部
void OnMouseDown()
{
if(photonView.isMine)
{
rollDice(); // call local
//notify other players about your turn
photonView.RPC("rollDice", RpcTarget.Others);
}
}
[PunRPC]
void rollDice()
{
//Your logic here
}
因此,如果您在本地播放,更改将正确显示在每个播放器设备上
!!!不要将Update/Start/OnMouseDown等事件函数标记为RPC!为您的任务创建另一种方法
对不起,我的英语…您应该将本地播放器和远程播放器的方法分开 检查photonView.IsMine,如果IsMine==true,则在本地调用方法并使用RpcTargets通知远程。全部
void OnMouseDown()
{
if(photonView.isMine)
{
rollDice(); // call local
//notify other players about your turn
photonView.RPC("rollDice", RpcTarget.Others);
}
}
[PunRPC]
void rollDice()
{
//Your logic here
}
因此,如果您在本地播放,更改将正确显示在每个播放器设备上
!!!不要将Update/Start/OnMouseDown等事件函数标记为RPC!为您的任务创建另一种方法
对不起,我的英语…photonView.RPC(“rollDice”,RpcTarget.Others)
而不是RpcTarget。其他使用RpcTarget.All来反映掷骰子动画以及玩家和其他玩家的变化RpcTarget。其他将显示不在我们设备中的其他玩家的骰子滚动。photonView.RPC(“rollDice”,RpcTarget.Others)
而不是RpcTarget。其他使用RpcTarget.All来反映掷骰子动画以及玩家和其他玩家的变化RpcTarget。其他人将在我们设备以外的其他玩家中显示掷骰子。感谢您的回复。这对我有帮助。我还有一个问题,我应该如何改变球员的轮换?比如,如果(photonView.isMine)被执行,我应该如何让其他玩家转向?谢谢你的回复。这对我有帮助。我还有一个问题,我应该如何改变球员的轮换?比如如果(photonView.isMine)被执行,我应该如何让其他玩家转向它?