触发数据库事件时,成员变量未更新

时间:2018-09-25 09:11:56

标签: c# firebase unity3d firebase-realtime-database

我在场景中有一个游戏对象,并附加了一个脚本,该脚本可从Firebase实时数据库中检索数据。就是这样-

public class A: Monobehaviour{
    private bool started;
    void Start(){
        FirebaseDatabase.DefaultInstance.RootReference.Child("path").ValueChanged += OnStartedRead;
    }
    private void OnStartedRead(object sender, ValueChangedEventArgs args) {
        if (!args.Snapshot.Exists || args.DatabaseError != null) return;
        started = (bool) args.Snapshot.Value;
        last_action_time = Time.time;
        Debug.Log("game started " + started);
    }
    void Update(){
        float start_period = 5.0f;
        float start_delay = 5.0f;
        if(started == false  && time - last_action_time > start_period) {
            Debug.Log(started.ToString());
            // some code to make started true on the server
        }
    }
    void OnDestroy(){
        FirebaseDatabase.DefaultInstance.RootReference.Child("path").ValueChanged -= OnStartedRead;
    }
}

当我第一次进入场景时,当服务器上的值为true时,我会在Debug控制台中看到“ game starts True”和“ True”。但是,当我退出场景并再次输入场景时,在调试控制台中会看到“游戏开始True”和“ False”。并且即使在服务器上将布尔值设置为true时,它也会每5秒重复打印一次false。为什么即使触发ValueChanged事件,成员变量也不更新?

0 个答案:

没有答案