IEnumerator Co(float time, Action <float> execute, Action callback, bool realtime) { WaitForSecondsRT wait = new WaitForSecondsRT(time); execute(0); float t = 0; while (t <= 1 && time > 0) { if (realtime) { t += Time.unscaledDeltaTime / time; } else { t += Time.deltaTime / time; } execute(t); if (realtime) { yield return(wait.NewTime(Time.unscaledDeltaTime)); } else { yield return(null); } } execute(1); coroutine = null; this.callback = null; if (callback != null) { callback(); } }
private IEnumerator RebindKeyCo(string ButtonName, string oldValue) { WaitForSecondsRT wait = new WaitForSecondsRT(1); string keyName = "N/A"; do { if (Input.anyKeyDown) { foreach (KeyCode kc in Enum.GetValues(typeof(KeyCode))) { if (Input.GetKeyDown(kc)) { keyName = kc.ToString(); break; } } break; } yield return(wait.NewTime(0.0001f)); }while(true); yield return(new WaitForSecondsRealtime(0.1f)); foreach (KeyValuePair <string, TMPro.TMP_Text> entry in buttonKeys) { if (entry.Key != ButtonName && entry.Value.text == keyName) { entry.Value.text = oldValue; inputManager.SetKey(entry.Key, (KeyCode)System.Enum.Parse(typeof(KeyCode), oldValue)); break; } } buttonKeys[ButtonName].text = keyName; inputManager.SetKey(ButtonName, (KeyCode)System.Enum.Parse(typeof(KeyCode), keyName)); }