如何使用 Unity 中的 Photon 和骰子在棋盘游戏中创建回合制经理?

Posted

技术标签:

【中文标题】如何使用 Unity 中的 Photon 和骰子在棋盘游戏中创建回合制经理?【英文标题】:How to create a turn based manager in a board game using Photon in Unity with the dice? 【发布时间】:2021-04-13 16:49:49 【问题描述】:

我遇到的问题是,当我将玩家 2 的骰子 SetActive 设置为 False 时,玩家 1 的骰子也会消失,因为 PhotonTargets 设置为 All 以使玩家令牌一起移动。下面是我尝试它的代码。我什至需要在这里编码这个逻辑还是应该在其他地方?提前致谢

public static void MoveSteps(string playerName, int numberOfSteps)
    
        ScriptsPhotonView.RPC("MoveStepsRPC", PhotonTargets.All, playerName, numberOfSteps); 
    

    [PunRPC]
    void MoveStepsRPC(string playerName, int numberOfSteps)
    
        print("playerName:" + playerName);
        print("numberOfSteps:" + numberOfSteps);
        

        if (playerName == "Player1")
        
            GameObject.Find(playerName).GetComponent<PlayerController>().Move(numberOfSteps);
            dice.SetActive(true);
        
        
        else if (playerName == "Player2")
        
           dice.SetActive(false);
        
    

【问题讨论】:

您是否尝试过使用photonView.IsMine 【参考方案1】:

我认为您甚至不必为其他玩家禁用骰子,只需让他们使用它的脚本即可。也许设置一个像“canMove”和if (!can move)diceScript.enabled = false;这样的布尔值或者,您可以将骰子放在单独的层上,而轮到它的玩家没有相机忽略该层或其他东西。希望这会有所帮助。

【讨论】:

以上是关于如何使用 Unity 中的 Photon 和骰子在棋盘游戏中创建回合制经理?的主要内容,如果未能解决你的问题,请参考以下文章

Unity 中的 AI 角色与 Photon View

使用 Photon Unity Network(多人游戏)在 Unity 中实时同步

使用Photon引擎进行unity网络游戏开发

如何将一个桌面作为 Photon Unity 服务器

使用 Photon Unity Networking 向网络游戏中的特定玩家显示消息

Unity Photon PUN RPC 只能在房间内使用?