Unity3d:脚本更改属性值但没有任何反应

时间:2013-05-01 23:41:26

标签: c# networking properties callback unity3d

我已经为我的GameObject的GameManager Monobehaviour设置了Mode(一个枚举)“mode”类型的公共属性,但是有时候,特别是在回调中,将值赋予所述属性并没有做任何事情:

例如:

public class GameManager : uLink.MonoBehaviour {
    public static GameManager instance;

    public bool dedicated = false;
    public Mode mode = Mode.MainMenu;
    public List<Player> players = new List<Player> ();
    public Player localPlayer;


    // Use this for initialization
    void Start ()
    {
        GameManager.instance = this;
    }

    #region Server
        #region Network

    void uLink_OnServerInitialized ()
    {
        Debug.Log ("Server successfully started on port " + uLink.Network.listenPort);
        new Authenticator ("127.0.0.1", 1234, "DB", "dbUser", "dbPassword");
        mode = Mode.ServerDone;
    }
    (...)
    public enum Mode
    {
        MainMenu, //
        ServerInit, //Server start
        ServerStarting, //Server is starting
        ServerDone, //Server done loading
        ClientInit, //Client starting up
        ClientConnected, //Client connected
        ClientAwaitAuth,
        ClientAuthed, //Client authenticated
        ClientAuthFailed,
        Client //Client mode
    }
}

(这在使用Unity3D的网络和uLink的网络时都会发生)

回调发生且日志放在控制台上,也会创建验证器单例,但模式不会更改。我已尝试调试并在mode = Mode.ServerDone;上放置一个断点,但它只是说“Value not loaded”

如果我使用编辑器手动将模式更改为Mode.ServerDone,我的代码将完美运行。

我最好的猜测是,这是因为回调是由一个没有能力写入属性的协程调用的,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

我找到答案,结果是StartServer()不是异步,因此我的模式被替换了。