Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一多人全局变量_C#_Unity3d_Multiplayer - Fatal编程技术网

C# 统一多人全局变量

C# 统一多人全局变量,c#,unity3d,multiplayer,C#,Unity3d,Multiplayer,我有Player(networkbehavior)script附加到Player预置上,当客户端加入时会产生该预置,还有Global(monobhavior)script,它在场景内部 在全局脚本中,我有以下内容: class Global : MonoBehaviour { public static int gloablInteger; void Start() { globalInteger = 0; } } class Player

我有
Player(networkbehavior)
script附加到Player预置上,当客户端加入时会产生该预置,还有
Global(monobhavior)
script,它在场景内部

在全局脚本中,我有以下内容:

class Global : MonoBehaviour
{
    public static int gloablInteger;

    void Start()
    {
         globalInteger = 0;
    }
}
class Player : Networkbehaviour
{
    public void Start()
    {
        Global.globalInteger++;
    }
}
在播放器脚本中,我有以下内容:

class Global : MonoBehaviour
{
    public static int gloablInteger;

    void Start()
    {
         globalInteger = 0;
    }
}
class Player : Networkbehaviour
{
    public void Start()
    {
        Global.globalInteger++;
    }
}
我在更新函数中设置为Debug.Log(globalInteger),它打印
0
,然后第一个客户端(主机)加入并打印
1
,然后第二个客户端加入并仍然打印
1
,而不是
2
。为什么会发生这种情况?

这对我很有效

这是我的剧本

客户

void Start () 
{
    globalS.g++;
    Debug.Log(globalS.g); //1,2,3,4,5
}
globalS

public static int g = 0;
我想你可能会重置globalInteger的值,或者没有调用globalInteger。globalInteger++以正确的方式,注意每个GameObject Start函数在运行时只调用一次。

它对我有效

这是我的剧本

客户

void Start () 
{
    globalS.g++;
    Debug.Log(globalS.g); //1,2,3,4,5
}
globalS

public static int g = 0;

我认为您可能重置globalInteger,或者没有调用全局。globalInteger++请注意,每个GameObject Start函数在运行时只调用一次。

每次客户端加入时,都会在Start()中将globalInteger重置为0函数。

每次客户端加入时,都会在Start()函数中将globalInteger重置为0。

为什么?全局纸条被附加到场景中的空对象上,当客户端加载他在每个MonoBehavior上运行Start()的场景时,它会留在那里。我是多人游戏新手,所以不知道。我会尝试一下并告诉您发生了什么如果您正在使用UNet并希望在客户端之间同步一个值使用SyncVar,但还有一个问题,我需要同步自定义类。问题是,我设置了简单的环境,但在我的代码中,它是自定义类,通过文档,它只能同步简单的类型?全局纸条被附加到场景中的空对象上,当客户端加载他在每个MonoBehavior上运行Start()的场景时,它会留在那里。我是多人游戏新手,所以不知道。我会尝试一下并告诉您发生了什么如果您正在使用UNet并希望在客户端之间同步一个值使用SyncVar,但还有一个问题,我需要同步自定义类。在这个问题上,我设置了简单的环境,但在我的代码中,它是自定义类,通过文档,它只能同步简单的类型。我知道,但由于某种原因,它不起作用。如果我有全局单行为脚本,并且使用client1对其进行了更改,client2会看到更改吗?我知道,但由于某些原因,它不起作用。如果我有全局单行为脚本,并且使用client1对其进行了更改,client2会看到更改吗?