void enter(TOUCH_STATE state) { VoiceMgr vm = VoiceMgr.GetInstance(); Debug.Log("enter " + state); switch (state) { case TOUCH_STATE.START: vm.prepare("record.amr"); lastTouchTime = Time.time; voice.SetActive(true); mic.SetActive(true); volume.SetActive(true); cancel.SetActive(false); warning.SetActive(false); time.transform.localScale = new Vector2(0, 1); notice.text = "滑动手指,取消发送"; break; case TOUCH_STATE.MOVE_OUT: if (lastTouchTime > 0) { mic.SetActive(false); volume.SetActive(false); cancel.SetActive(true); warning.SetActive(false); notice.text = "松开手指,取消发送"; } break; case TOUCH_STATE.MOVE_IN: if (lastTouchTime > 0) { mic.SetActive(true); volume.SetActive(true); cancel.SetActive(false); warning.SetActive(false); notice.text = "滑动手指,取消发送"; } break; case TOUCH_STATE.CANCEL: if (lastTouchTime > 0) { vm.cancel(); lastTouchTime = 0; voice.SetActive(false); } break; case TOUCH_STATE.END: if (lastTouchTime > 0) { if (Time.time - lastTouchTime < 1.0f) { vm.cancel(); voice.SetActive(true); mic.SetActive(false); volume.SetActive(false); cancel.SetActive(false); warning.SetActive(true); time.transform.localScale = new Vector2(0, 1); notice.text = "录制时间太短"; PUtils.setTimeout(() => { voice.SetActive(false); }, 1.0f); } else { onVoiceOK(); } lastTouchTime = 0; } break; default: break; } }