/// <summary> /// 播放视频 /// </summary> /// <param name="time">指定时间点</param> /// <param name="mPlayType">播放模式,仅支持VideoRenderMode MaterialOverride 和RenderTexture模式</param> public void PlayOnTime(float time, MPlayType mPlayType = MPlayType.Normal) { if (m_videoPlayer == null) { return; } InternalPlay(time, mPlayType); }
/// <summary> /// 播放视频 /// </summary> /// <param name="normalTime">归一化的时间(0-1)</param> /// <param name="mPlayType">播放模式,仅支持VideoRenderMode MaterialOverride 和RenderTexture模式</param> public void Play(float normalTime = 0f, MPlayType mPlayType = MPlayType.Normal) { if (m_videoPlayer == null) { return; } InternalPlay((float)(normalTime * length), mPlayType); }
private void InternalPlay(float time, MPlayType mPlayType) { this.time = time; if (!isPlaying) { m_videoPlayer.Play(); } _isPlaying = true; _mPlayType = mPlayType; _internalEventHandlers.Clear(); switch (mPlayType) { case MPlayType.Normal: //donothing break; case MPlayType.EasyIn: if (renderMode == VideoRenderMode.MaterialOverride || renderMode == VideoRenderMode.RenderTexture) { alpha = 0f; StartCoroutine("EaysInCoroutine"); } break; case MPlayType.EasyOut: if (renderMode == VideoRenderMode.MaterialOverride || renderMode == VideoRenderMode.RenderTexture) { ResetAlpha(); InternalRegisterEvent((long)(m_videoClip.frameCount - 1), InternalPlayCompleteAction); } break; case MPlayType.EasyInOut: if (renderMode == VideoRenderMode.MaterialOverride || renderMode == VideoRenderMode.RenderTexture) { //Pause(); alpha = 0f; StartCoroutine("EaysInCoroutine"); InternalRegisterEvent((long)(m_videoClip.frameCount - 1), InternalPlayCompleteAction); } break; } #if UNITY_EDITOR Log(); #endif }