Photon Unity 回合制多人骰子游戏和同步视图
Photon Unity turn based multiplayer dice game and synchronize the view
我创建了一个只有一个骰子的场景,玩家将轮流点击骰子,这将改变骰子的颜色。首先我创建了一个房间,一个玩家加入了房间并进入了游戏场景。到这里一切正常。但是当玩家 1(主持人)点击骰子时,玩家 2 看不到骰子在移动。我在检查器中添加了光子变换视图,这是我的代码:
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 函数点击骰子,但游戏场景中两个玩家的骰子不同步。我希望每当玩家点击骰子时,骰子都会显示在两个屏幕上,颜色会发生变化,并且应该显示在其他玩家的屏幕上。然后在下一个回合中,另一个玩家将做同样的事情。请帮我解决这个问题。
谢谢
您应该将本地播放器和远程播放器的方法分开。
检查photonView.IsMine,if isMine == true 在本地调用方法并用RpcTargets.All
通知远程
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 之类的 EventFunctions 标记为 RPC!为您的任务创建另一种方法...
对不起我的英语...
photonView.RPC("rollDice", RpcTarget.Others);
而不是 RpcTarget.Others 使用 RpcTarget.All 来反映骰子滚动动画和玩家和其他人的变化玩家。 RpcTarget.Others 将在不在我们设备中的其他玩家中显示掷骰子。
或者,您可以使用实例化为房间对象的单个骰子,然后更改它的颜色。
我创建了一个只有一个骰子的场景,玩家将轮流点击骰子,这将改变骰子的颜色。首先我创建了一个房间,一个玩家加入了房间并进入了游戏场景。到这里一切正常。但是当玩家 1(主持人)点击骰子时,玩家 2 看不到骰子在移动。我在检查器中添加了光子变换视图,这是我的代码:
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 函数点击骰子,但游戏场景中两个玩家的骰子不同步。我希望每当玩家点击骰子时,骰子都会显示在两个屏幕上,颜色会发生变化,并且应该显示在其他玩家的屏幕上。然后在下一个回合中,另一个玩家将做同样的事情。请帮我解决这个问题。 谢谢
您应该将本地播放器和远程播放器的方法分开。
检查photonView.IsMine,if isMine == true 在本地调用方法并用RpcTargets.All
通知远程 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 之类的 EventFunctions 标记为 RPC!为您的任务创建另一种方法...
对不起我的英语...
photonView.RPC("rollDice", RpcTarget.Others);
而不是 RpcTarget.Others 使用 RpcTarget.All 来反映骰子滚动动画和玩家和其他人的变化玩家。 RpcTarget.Others 将在不在我们设备中的其他玩家中显示掷骰子。
或者,您可以使用实例化为房间对象的单个骰子,然后更改它的颜色。