我在场景中有一个游戏对象,并附加了一个脚本,该脚本可从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事件,成员变量也不更新?