переменная-член не обновляется, когда запускается событие базы данных - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть игровой объект в сцене с прикрепленным скриптом, который извлекает данные из базы данных 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» и «True» в консоли отладки, когда значение на сервере равно true.Но когда я покидаю сцену и снова вхожу в нее, я получаю «игра началась True» и «False» в консоли отладки.И он продолжает повторять печать false каждые 5 секунд, даже если логическое значение true на сервере.Почему переменная-член не обновляется, даже если срабатывает событие ValueChanged?

...