Unity Networking:从服务器检索值的最佳方法

时间:2018-07-23 12:00:19

标签: unity3d networking

我有一个仅服务器的GameObject,带有一个名为'GameManager'(GM)的附加C#脚本,该脚本可跟踪游戏空间中的GameObjects。当玩家尝试与其中一个游戏对象互动时,他们必须首先与GM核对。理想情况下,我想在GM上调用一个返回布尔值的函数。

我的问题是,这样做的最佳方法是什么?

这类似于我尝试的操作:在我的播放器脚本中:

void Update(){
    Cmd_canIInteractWithThis(this.transform.position);
}

[Command]
void bool Cmd_canIInteractWithThis(Vector2 playerPos){
    bool answer = GameManager.canIInteractWithThis(playerPos);
    return answer;
}

我不是真的想要syncVar,因为这不是一成不变的事情,我认为所有客户端都将使用同一个变量进行同步,对吗?我只希望一个客户得到答复。

也许我需要做这样的事情?

[Command]
void bool Cmd_canIInteractWithThis(NetworkConnection playerConn, Vector2 playerPos){
    bool answer = GameManager.canIInteractWithThis(playerPos);
    Target_repondToClient(playerConn, answer);

[TargetRpc]
    Target_repondToClient(NetworkConnection playerConn, bool answer){
    return answer; // somehow?
}

我是UNET的新手,发现很难正常工作。您的思维必须考虑到复杂性的另一个方面。你们是如何做到的?任何一般提示将不胜感激! (例如:根据经验,首先要与主机配合使用,然后再将其扩展到其他客户端?(这可能是个不好的建议)

0 个答案:

没有答案