XVideoManagerCreator = function() local XVideoManager = {} local VideoPlayState = { Stop = 0, Playing = 1, Pause = 2 } local State = VideoPlayState.Stop -- local PlayingId = -1 local VideoPlayer = nil function XVideoManager.PlayMovie(id, callback, needAuto, needSkip) if not id then return end if State == VideoPlayState.Playing then XLog.Error("XVideoManager.PlayMovie: Video正在播放") return end local config = XVideoConfig.GetMovieById(id) if not XDataCenter.UiPcManager.IsPc() and not CS.XResourceManager.HasFile(config.VideoUrl, true) then XLog.Error("非pc端且路径不存在", config.VideoUrl) if callback then callback() end return end if XDataCenter.UiPcManager.IsPc() and not CS.XResourceManager.HasFile(config.VideoUrlPc, true) then XLog.Error("pc端且路劲不存在", config.VideoUrlPc) if callback then callback() end return end -- PlayingId = id State = VideoPlayState.Playing XLuaUiManager.Open("UiVideoPlayer", id, callback, needAuto, needSkip) end --停止播放 function XVideoManager.Stop() if State ~= VideoPlayState.Playing then return end if not VideoPlayer then return end State = VideoPlayState.Stop -- PlayingId = -1 VideoPlayer = nil end function XVideoManager.Pause() if State ~= VideoPlayState.Playing then return end if not VideoPlayer then return end State = VideoPlayState.Pause VideoPlayer:Pause() end function XVideoManager.Resume() if State ~= VideoPlayState.Pause then return end if not VideoPlayer then return end State = VideoPlayState.Playing VideoPlayer:Resume() end function XVideoManager.SetVideoPlayer(player) VideoPlayer = player end function XVideoManager.IsPlaying() return VideoPlayer and VideoPlayer:IsPlaying() end -- 注意pv资源需要放在launch目录下,和下载pv使用同一份 function XVideoManager.CheckCgUrl() local needCGBtn = false local videoUrl = CS.XAudioManager.LaunchVideoAsset local videoUrlPc = CS.XAudioManager.LaunchVideoAssetPc local width = CS.XLaunchManager.LaunchConfig:GetInt("LaunchVideoWidth") local height = CS.XLaunchManager.LaunchConfig:GetInt("LaunchVideoHeight") local hasVideo = (videoUrl and videoUrl ~= "" and videoUrl ~= "null") if hasVideo then local bundleName = CS.XResourceManager.GetBundleUrl(videoUrl) videoUrl = CS.XBundleManager.GetFile(bundleName) local bundleNamePc = CS.XResourceManager.GetBundleUrl(videoUrlPc) videoUrlPc = CS.XBundleManager.GetFile(bundleNamePc) needCGBtn = true if CS.UnityEngine.Application.platform == CS.UnityEngine.RuntimePlatform.Android then local path = videoUrl local streamingAssetPath = CS.UnityEngine.Application.streamingAssetsPath local len = string.len(streamingAssetPath) local prefix = string.sub(videoUrl, 0, len) if prefix == streamingAssetPath then videoUrl = string.sub(videoUrl, len + 2) end local prefixPc = string.sub(videoUrlPc, 0, len) if prefixPc == streamingAssetPath then prefixPc = string.sub(videoUrlPc, len + 2) end end end return needCGBtn, videoUrl, videoUrlPc, width, height end return XVideoManager end