Unity多人游戏全局变量

Unity multiplayer global variable

我有 Player(NetworkBehaviour) 脚本附加到玩家预制件,当客户端加入时生成,Global(MonoBehaviour) 脚本在场景中

在全局脚本中我有这个:

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,或者没有调用Global.globalInteger++ 以正确的方式,注意每个 GameObject Start 函数在运行时只调用一次。

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