У меня есть игровой объект в сцене с прикрепленным скриптом, который извлекает данные из базы данных 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?