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。
我有 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。