Unity多人全局变量

时间:2017-07-26 18:57:53

标签: c# unity3d multiplayer

我有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}}而不是1。为什么会这样?

2 个答案:

答案 0 :(得分:0)

它对我有用。

这是我的剧本

clientS

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

<强>全局

public static int g = 0;

我认为您可能重置 globalInteger ,或者没有正确调用 Global.globalInteger ++ ,请注意每个GameObject Start功能在运行时调用一次。

答案 1 :(得分:0)

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