在Unity中使用Photon无法通过RPC调用同步变量

问题描述 投票:0回答:1

所以我正在开发一款使用 Photon 在 Unity 中制作的多人游戏,

我有一个带有 phtonView 组件的游戏对象和一个带有 bool 的脚本,我想将其同步到所有客户端

但我有一个问题,如果我将 bool 与 RPC 调用同步,那么它会工作得很好,但由于并非所有客户端在调用时都会加载到房间中,因此所有迟到的客户端在最终加入后都不会同步 bool ,

我有 2 个客户端,其中一个创建了一个房间,在 start() 处将第一个客户端的 bool 设置为 true(使用 RPC 调用);另一个加入,它的 bool 未设置为 true,因为它在第一个客户端的 RPC 调用期间不处于活动状态,

我尝试使用 photon [SyncVar],但它无法识别它,并且我不想在只需要一个时进行持续的 RPC 调用,

即使并非所有客户端都已加载,我该怎么做才能通过一次调用同步所有客户端的 bool 变量?

c# unity-game-engine game-development multiplayer photon-pun
1个回答
0
投票

如果您有一个主脚本,其中包含更新所有客户端的函数,该怎么办——当客户端加入时调用该函数。

我没有测试任何这些,自从我在 Unity 中做任何事情以来已经有 10 年了,哈哈——而且我认为这对于更多的客户端来说也会很糟糕,如果 Unity RPC 有一个内置的方法来做到这一点,那肯定是更好的选择

例如

// Server.cs
using UnityEngine;
public class Server : MonoBehaviour {
    public ArrayList<Client>() clients;
    public void SyncBool(bool val) {
        foreach (Client c: clients) {
            c.setBool(val);
        }    
    }
}

// Client.cs    
using UnityEngine;
public class Client : MonoBehaviour {
    public Server server;
    bool syncMe;
    void SetBool(bool set) {
        syncMe = set;
    }
    void Start(){
        server.clients.add(this.GameObject()); //i don't know what this would be lol 
        server.SyncBool(True);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.