static public void When(string name, Action <dynamic> action) { dynamic dt = new {}; RefDynamic dta = new RefDynamic(ref dt); Instance.StartCoroutine(WhenUpdate(dta, action)); socket.On(name, (d) => { var data = d as dynamic; dt = data; dta.value = dt; dta.times++; // action(data); }); }
static public IEnumerator WhenUpdate(RefDynamic dt, Action <dynamic> action) { int lastTimes = 0; while (true) { if (lastTimes != dt.times) { lastTimes = dt.times; action(dt.value); } yield return(null); } yield return(null); }