首页 > 解决方案 > 如何在 Unity3D Networking 中同步变量

问题描述

你好标题太笼统了,但我有几个问题。我是 UnityNetworking 的新手。我正在观看 quill18 的 youtube 教程并尝试在我的项目中实施。所以我知道 [SyncVar] 值只能在服务器中设置和同步。但即使我检查 isServer > hasAuthority > isLocalPlayer 我也无法正确同步它们。我只能在 isServer 下同步它们。这里是问题开始..

我的代码

private void Update()
{
    ServerUpdate();
    ClientUpdate();
} 

[SyncVar] public int syncIT_1;
[SyncVar] public int syncIT_2;

void WillItSyncNow()
{
    if (isServer)
    {
        syncIT_1 = 300;
        syncIT_2 = 300;
    }       
}

[Command]
void CmdSyncPlease()
{
    syncIT_1 = 400;
    syncIT_2 = 400;
}

void ServerUpdate()
{       
    if (isServer)
    {   
        syncIT_1 = 100;
        syncIT_2 = 100;

        if (hasAuthority)
        {
            syncIT_1 = 200;
            syncIT_2 = 200;

            if (isLocalPlayer == true)
            {
                WillItSyncNow();
                CmdSyncPlease();
            }
        }
    }
}

我的服务器客户端最新值:

在此处输入图像描述

我的客户最新价值观:

在此处输入图像描述

标签: c#unity3dunity3d-unet

解决方案


推荐阅读