无法统一设置带有 syncvars 的文本

unable to set text with syncvars in unity

我最终想显示活跃玩家,但我在设置文本框的值时遇到了问题。

我的理解是,一旦玩家加入,我需要使用syncvars在每个客户端上显示所有玩家的名字。所以首先,我正在尝试这个...

[SyncVar(hook = "OnPlayerName")]
public string name;

void OnPlayerName(string newPlayerName)
{
    playerlist.text = name;

}

public override void OnStartClient()
{
    name = "terrance";
}

当我运行这个的时候,文本框是空的。如果我设置没有 syncvars 的文本,它就可以工作。当然,如果我在不使用 syncvars 的情况下进行更改,则更改仅对本地客户端可见。

解决方案: 参数 newPlayerName 需要匹配变量名,所以在这种情况下 "name"...

void OnPlayerName(string name)

您正在将它连接到一个不存在的函数,

"OnPlayName"

应该是

[SyncVar(hook = "OnPlayerName")]
public string name;