C# 无法使用unity中的syncvars设置文本

C# 无法使用unity中的syncvars设置文本,c#,unity3d,unet,C#,Unity3d,Unet,我最终尝试显示活动玩家,但设置文本框的值时遇到问题 我的理解是,一旦玩家加入,我需要使用syncvars显示每个客户端上的所有玩家名称。所以首先,我正在尝试这个 [SyncVar(hook = "OnPlayerName")] public string name; void OnPlayerName(string newPlayerName) { playerlist.text = name; } public override void OnStartClient() {

我最终尝试显示活动玩家,但设置文本框的值时遇到问题

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

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

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

}

public override void OnStartClient()
{
    name = "terrance";
}
运行此命令时,文本框为空。如果我在没有syncvars的情况下设置文本,它会工作。当然,只有在不使用syncvars的情况下,本地客户端才能看到更改

决议: 参数newPlayerName需要与变量名匹配,因此在本例中为“name”


你把它挂在一个不存在的函数上

“OnPlayName”

应该是

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

接得好,但不是这样。我已经更新了上面的代码。另外,您似乎对onplayername的参数没有做任何操作,但是,您确实让我找到了正确的位置。一旦看到它,就很明显了,但是onplayername的参数与变量名不匹配。谢谢你的帮助。是的,现在看到你的评论了。这就是问题所在。
[SyncVar(hook = "OnPlayerName")]
public string name;