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