2017-07-26 23 views
0

我已經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。這是爲什麼發生?

回答

0

每次客戶端加入時,都會在Start()函數中將globalInteger重置爲0。

+0

爲什麼?這個全局腳本是在場景中空的fameobject,它停留在那裏 –

+0

當客戶端加載場景時,他在本地的每個MonoBehaviour上運行Start() https://docs.unity3d.com/Manual/ExecutionOrder.html – Fiffe

+0

我是新來的多人遊戲所以不知道。我會試試看,並告訴你發生了什麼 –

0

它適合我。 這是我的腳本

客戶
void Start() { globalS.g++; Debug.Log(globalS.g); //1,2,3,4,5 } 全局 public static int g = 0;

我想你可能重置globalInteger,或以正確的方式不叫Global.globalInteger ++ ,請注意每個GameObject Start函數在運行時只調用一次。

+0

我知道,但由於某種原因不起作用。如果我有全局monobehaviour腳本和客戶端1我改變了一些東西,客戶端2會看到變化? –