private System.Collections.IEnumerator VideoPlayCoroutine(int num)
 {
     videoPlayer = GetComponent <UnityEngine.Video.VideoPlayer>();
     Debug.Assert(videoClips.Count > num);
     Debug.Assert(videoClips[num] != null);
     videoPlayer.clip = videoClips[num];
     videoPlayer.Prepare();
     while (!videoPlayer.isPrepared)
     {
         Debug.Log("Preparing Video");
         yield return(null);
     }
     Debug.Log("Done Preparing Video");
     videoPlayer.Play();
     while (videoPlayer.isPlaying)
     {
         yield return(null);
     }
     Debug.Log("Played Successfully!!");
 }
Exemple #2
0
        /// <summary>
        /// Add video file to video file list.
        /// </summary>
        public void SetRootFolder()
        {
            if (Directory.Exists(PathConfig.SaveFolder))
            {
                DirectoryInfo direction = new DirectoryInfo(PathConfig.SaveFolder);
                FileInfo[]    files     = direction.GetFiles("*", SearchOption.AllDirectories);
                videoFiles.Clear();
                ///////////////////////////
                //-------original-------//
                /////////////////////////

                /*for (int i = 0; i < files.Length; i++)
                 * {
                 *  if (files[i].Name.EndsWith(".mp4"))
                 *  {
                 *      videoFiles.Add(PathConfig.SaveFolder + files[i].Name);
                 *      continue;
                 *  }
                 * }*/
                if (files[files.Length - 1].Name.EndsWith(".mp4"))
                {
                    videoFiles.Add(PathConfig.SaveFolder + files[files.Length - 1].Name);
                }
                VideoName = files[files.Length - 1].Name;//koala añadió
            }
            // Init VideoPlayer properties.
            videoPlayerImpl                           = gameObject.GetComponent <UnityEngine.Video.VideoPlayer>();
            videoPlayerImpl.source                    = UnityEngine.Video.VideoSource.Url;
            videoPlayerImpl.playOnAwake               = false;
            videoPlayerImpl.renderMode                = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
            videoPlayerImpl.targetCamera              = Camera.main;
            videoPlayerImpl.audioOutputMode           = UnityEngine.Video.VideoAudioOutputMode.AudioSource;
            videoPlayerImpl.controlledAudioTrackCount = 1;
            videoPlayerImpl.aspectRatio               = UnityEngine.Video.VideoAspectRatio.Stretch;
            if (gameObject.GetComponent <AudioSource>() != null)
            {
                videoPlayerImpl.SetTargetAudioSource(0, gameObject.GetComponent <AudioSource>());
                gameObject.GetComponent <AudioSource>().clip = null;
            }
        }
        public override void CreatePlayer()
        {
            _mediaPlayer = gameObject.GetComponent <UnityEngine.Video.VideoPlayer>();

            if (_mediaPlayer == null)
            {
                _mediaPlayer = gameObject.AddComponent <UnityEngine.Video.VideoPlayer>();
            }

            _audioSource = gameObject.GetComponent <AudioSource>();

            if (_audioSource == null)
            {
                _audioSource = gameObject.AddComponent <AudioSource>();
            }

            _mediaPlayer.audioOutputMode = UnityEngine.Video.VideoAudioOutputMode.AudioSource;
            _mediaPlayer.SetTargetAudioSource(0, _audioSource);
            _mediaPlayer.renderMode        = UnityEngine.Video.VideoRenderMode.APIOnly;
            _mediaPlayer.prepareCompleted += OnVideoLoadingComplete;
            _mediaPlayer.EnableAudioTrack(0, true);
        }
Exemple #4
0
        /// <param name="clip">VideoClip reference</param>
        public override bool SetValues(PlayerValues values)
        {
            _mediaPlayer = gameObject.GetComponent <UnityEngine.Video.VideoPlayer>();

            if (_mediaPlayer == null)
            {
                // no media component already added to this component, try adding a MediaPlayer component
                try
                {
                    _mediaPlayer = gameObject.AddComponent <UnityEngine.Video.VideoPlayer>();
                }
                catch (Exception e)
                {
                    Debug.LogError("AVProVideo not found in project: " + e.ToString());
                    return(false);
                }
            }

            _audioSource = gameObject.GetComponent <AudioSource>();

            if (_audioSource == null)
            {
                _audioSource = gameObject.AddComponent <AudioSource>();
            }
            if (_mediaPlayer == null)
            {
                _mediaPlayer = gameObject.AddComponent <UnityEngine.Video.VideoPlayer>();
            }

            _mediaPlayer.audioOutputMode = UnityEngine.Video.VideoAudioOutputMode.AudioSource;
            _mediaPlayer.SetTargetAudioSource(0, _audioSource);
            _mediaPlayer.renderMode        = UnityEngine.Video.VideoRenderMode.APIOnly;
            _mediaPlayer.clip              = values.videoClip;
            _mediaPlayer.prepareCompleted += OnVideoLoadingComplete;
            _mediaPlayer.EnableAudioTrack(0, true);
            return(true);
        }
Exemple #5
0
 void EndReachedEditorScene(UnityEngine.Video.VideoPlayer vp)
 {
     SceneManager.LoadScene("MapEditorScene");
     //Event Handler for VideoManager.
     //Obselete
 }
Exemple #6
0
        /// <summary>
        /// Read the data into the specified value.
        /// </summary>
        /// <param name="value">Value.</param>
        /// <param name="reader">Reader.</param>
        public override void ReadInto(object value, ISaveGameReader reader)
        {
            UnityEngine.Video.VideoPlayer videoPlayer = (UnityEngine.Video.VideoPlayer)value;
            foreach (string property in reader.Properties)
            {
                switch (property)
                {
                case "source":
                    videoPlayer.source = reader.ReadProperty <UnityEngine.Video.VideoSource>();
                    break;

                case "url":
                    videoPlayer.url = reader.ReadProperty <System.String>();
                    break;

                case "clip":
                    if (videoPlayer.clip == null)
                    {
                        videoPlayer.clip = reader.ReadProperty <UnityEngine.Video.VideoClip>();
                    }
                    else
                    {
                        reader.ReadIntoProperty <UnityEngine.Video.VideoClip>(videoPlayer.clip);
                    }
                    break;

                case "renderMode":
                    videoPlayer.renderMode = reader.ReadProperty <UnityEngine.Video.VideoRenderMode>();
                    break;

                case "targetCamera":
                    if (videoPlayer.targetCamera == null)
                    {
                        videoPlayer.targetCamera = reader.ReadProperty <UnityEngine.Camera>();
                    }
                    else
                    {
                        reader.ReadIntoProperty <UnityEngine.Camera>(videoPlayer.targetCamera);
                    }
                    break;

                case "targetTexture":
                    if (videoPlayer.targetTexture == null)
                    {
                        videoPlayer.targetTexture = reader.ReadProperty <UnityEngine.RenderTexture>();
                    }
                    else
                    {
                        reader.ReadIntoProperty <UnityEngine.RenderTexture>(videoPlayer.targetTexture);
                    }
                    break;

                case "targetMaterialRenderer":
                    if (videoPlayer.targetMaterialRenderer == null)
                    {
                        videoPlayer.targetMaterialRenderer = reader.ReadProperty <UnityEngine.Renderer>();
                    }
                    else
                    {
                        reader.ReadIntoProperty <UnityEngine.Renderer>(videoPlayer.targetMaterialRenderer);
                    }
                    break;

                case "targetMaterialProperty":
                    videoPlayer.targetMaterialProperty = reader.ReadProperty <System.String>();
                    break;

                case "aspectRatio":
                    videoPlayer.aspectRatio = reader.ReadProperty <UnityEngine.Video.VideoAspectRatio>();
                    break;

                case "targetCameraAlpha":
                    videoPlayer.targetCameraAlpha = reader.ReadProperty <System.Single>();
                    break;

                case "waitForFirstFrame":
                    videoPlayer.waitForFirstFrame = reader.ReadProperty <System.Boolean>();
                    break;

                case "playOnAwake":
                    videoPlayer.playOnAwake = reader.ReadProperty <System.Boolean>();
                    break;

                case "time":
                    videoPlayer.time = reader.ReadProperty <System.Double>();
                    break;

                case "frame":
                    videoPlayer.frame = reader.ReadProperty <System.Int64>();
                    break;

                case "playbackSpeed":
                    videoPlayer.playbackSpeed = reader.ReadProperty <System.Single>();
                    break;

                case "isLooping":
                    videoPlayer.isLooping = reader.ReadProperty <System.Boolean>();
                    break;

                case "timeSource":
                    videoPlayer.timeSource = reader.ReadProperty <UnityEngine.Video.VideoTimeSource>();
                    break;

                case "timeReference":
#if UNITY_2017_1_OR_NEWER
                    videoPlayer.timeReference = reader.ReadProperty <UnityEngine.Video.VideoTimeReference>();
#endif
                    break;

                case "externalReferenceTime":
#if UNITY_2017_1_OR_NEWER
                    videoPlayer.externalReferenceTime = reader.ReadProperty <System.Double>();
#else
                    reader.ReadProperty <System.Double>();
#endif
                    break;

                case "skipOnDrop":
                    videoPlayer.skipOnDrop = reader.ReadProperty <System.Boolean>();
                    break;

                case "controlledAudioTrackCount":
                    videoPlayer.controlledAudioTrackCount = reader.ReadProperty <System.UInt16>();
                    break;

                case "audioOutputMode":
                    videoPlayer.audioOutputMode = reader.ReadProperty <UnityEngine.Video.VideoAudioOutputMode>();
                    break;

                case "sendFrameReadyEvents":
                    videoPlayer.sendFrameReadyEvents = reader.ReadProperty <System.Boolean>();
                    break;

                case "enabled":
                    videoPlayer.enabled = reader.ReadProperty <System.Boolean>();
                    break;

                case "tag":
                    videoPlayer.tag = reader.ReadProperty <System.String>();
                    break;

                case "name":
                    videoPlayer.name = reader.ReadProperty <System.String>();
                    break;

                case "hideFlags":
                    videoPlayer.hideFlags = reader.ReadProperty <UnityEngine.HideFlags>();
                    break;
                }
            }
        }
Exemple #7
0
 /// <summary>
 /// Read the data using the reader.
 /// </summary>
 /// <param name="reader">Reader.</param>
 public override object Read(ISaveGameReader reader)
 {
     UnityEngine.Video.VideoPlayer videoPlayer = SaveGameType.CreateComponent <UnityEngine.Video.VideoPlayer>();
     ReadInto(videoPlayer, reader);
     return(videoPlayer);
 }
Exemple #8
0
 void EndReached(UnityEngine.Video.VideoPlayer vp)
 {
     Debug.Log("end vid");
 }
 private void OnLoopPointReached(UnityEngine.Video.VideoPlayer player)
 {
     this.Events.LoopPointReached.Invoke();
 }
Exemple #10
0
 void EndReachedQuit(UnityEngine.Video.VideoPlayer vp)
 {
     SceneManager.LoadScene("MainMenuScene");
     //Event Handler for VideoManager.
 }
Exemple #11
0
 void EndReachedRestart(UnityEngine.Video.VideoPlayer vp)
 {
     SceneManager.LoadScene("GameScene");
     //Event Handler for VideoManager.
 }
Exemple #12
0
        private IEnumerator Initialize()
        {
            movieRenderer = targetSurface.GetComponent <Renderer>();
            if (movieRenderer == null ||
                movieRenderer.material == null ||
                movieRenderer.material.mainTexture == null)
            {
                UpdateState(StateType.Error);
                throw new Exception(TAG + " No surface for media found.");
            }
#if USE_EASY_MOVIE_TEXTURE
            // Prevent Awake called before properties loaded.
            gameObject.SetActive(false);
            // Load EasyMovieTexture properties at runtime.
            easyMovieTexture             = gameObject.AddComponent <MediaPlayerCtrl>() as MediaPlayerCtrl;
            easyMovieTexture.m_bAutoPlay = false;
            easyMovieTexture.m_bLoop     = loop;
            //easyMovieTexture.m_strFileName = videoFile;
            easyMovieTexture.m_TargetMaterial    = new GameObject[1];
            easyMovieTexture.m_TargetMaterial[0] = targetSurface;
            easyMovieTexture.m_bSupportRockchip  = true;
            easyMovieTexture.m_shaderYUV         = Shader.Find("Unlit/Unlit_YUV");
            gameObject.SetActive(true);

            easyMovieTexture.OnReady += OnPrepareComplete;
            easyMovieTexture.OnEnd   += OnVideoPlayComplete;

            easyMovieTexture.Load(videoFile);
            // Following steps will be handled by EasyMovieTexture.
            yield break;
#elif USE_UNITY_VIDEO_PLAYER
            videoPlayer                        = gameObject.AddComponent <UnityEngine.Video.VideoPlayer>();
            videoPlayer.renderMode             = UnityEngine.Video.VideoRenderMode.MaterialOverride;
            videoPlayer.targetMaterialRenderer = targetSurface.GetComponent <MeshRenderer>();

            audioSource = gameObject.AddComponent <AudioSource>();
            videoPlayer.audioOutputMode = UnityEngine.Video.VideoAudioOutputMode.AudioSource;
            videoPlayer.SetTargetAudioSource(0, audioSource);

            videoPlayer.skipOnDrop = true;
            videoPlayer.isLooping  = loop;

            videoPlayer.prepareCompleted += (e) => { OnPrepareComplete(); };
            videoPlayer.loopPointReached += (e) => { OnVideoPlayComplete(); };

            yield return(null);

            string mediaUrl = "file://" + Application.streamingAssetsPath + "/" + videoFile;
#if UNITY_ANDROID && !UNITY_EDITOR
            //mediaUrl = "jar:" + mediaUrl;
            string assetsPath = Application.streamingAssetsPath + "/" + videoFile;
            string dataPath   = Application.persistentDataPath + "/" + videoFile;
            if (!File.Exists(dataPath))
            {
                WWW wwwReader = new WWW(assetsPath);
                yield return(wwwReader);

                if (wwwReader.error != null)
                {
                    Debug.LogError(TAG + " wwwReader error: " + wwwReader.error);
                }

                System.IO.File.WriteAllBytes(dataPath, wwwReader.bytes);
            }
            mediaUrl = dataPath;
#endif
            videoPlayer.url = mediaUrl;
#elif USE_ANDROID_MEDIA_PLAYER
            Media_Surface_Init();
            // TODO: Fix ArgumentException: nativeTex can not be null in Unity 2017.
            nativeTexture = Texture2D.CreateExternalTexture(
                textureWidth,
                textureHeight,
                TextureFormat.RGBA32,
                true,
                false,
                IntPtr.Zero
                );
            IssuePluginEvent(MediaSurfaceEventType.Initialize);

            string assetsPath = Application.streamingAssetsPath + "/" + videoFile;
            string dataPath   = Application.persistentDataPath + "/" + videoFile;
            if (!File.Exists(dataPath))
            {
                WWW wwwReader = new WWW(assetsPath);
                yield return(wwwReader);

                if (wwwReader.error != null)
                {
                    Debug.LogError(TAG + " wwwReader error: " + wwwReader.error);
                }

                System.IO.File.WriteAllBytes(dataPath, wwwReader.bytes);
            }

            // Delay 1 frame to allow MediaSurfaceInit from the render thread.
            yield return(null);

            mediaPlayer = GetMediaPlayerOnTextureID(textureWidth, textureHeight);

            try
            {
                mediaPlayer.Call("setDataSource", dataPath);
                mediaPlayer.Call("setLooping", loop);
            }
            catch (Exception e)
            {
                Debug.LogError(TAG + " Failed to load video for mediaPlayer: " + e.Message);
            }
#elif USE_VIVE_MEDIA_DECODER
            targetSurface.GetComponent <Renderer>().material = convertMaterial;

            mediaDecoder = targetSurface.AddComponent <HTC.UnityPlugin.Multimedia.MediaDecoder>()
                           as HTC.UnityPlugin.Multimedia.MediaDecoder;

            if (stereoSurface != null && stereoSurface2 != null)
            {
                HTC.UnityPlugin.Multimedia.StereoHandler.StereoType stereoType
                    = HTC.UnityPlugin.Multimedia.StereoHandler.StereoType.SIDE_BY_SIDE;
                if (stereoSurface.name == "UpSurface")
                {
                    stereoType = HTC.UnityPlugin.Multimedia.StereoHandler.StereoType.TOP_DOWN;
                }
                HTC.UnityPlugin.Multimedia.StereoHandler.SetStereoPair(
                    stereoSurface,
                    stereoSurface2,
                    movieRenderer.material,
                    stereoType,
                    true);
            }
            mediaDecoder.onInitComplete = new UnityEvent();
            mediaDecoder.onInitComplete.AddListener(OnPrepareComplete);
            mediaDecoder.onVideoEnd = new UnityEvent();
            mediaDecoder.onVideoEnd.AddListener(OnVideoPlayComplete);

            mediaDecoder.mediaPath = Application.streamingAssetsPath + "/" + videoFile;
            yield return(null);
#else
            audioSource = gameObject.AddComponent <AudioSource>();

            if (!Path.GetExtension(videoFile).Equals(".ogv") &&
                !Path.GetExtension(videoFile).Equals(".ogg"))
            {
                if (File.Exists(
                        Application.streamingAssetsPath + "/" +
                        Path.GetDirectoryName(videoFile) + "/" +
                        Path.GetFileNameWithoutExtension(videoFile) + ".ogv"
                        ))
                {
                    videoFile = Path.GetDirectoryName(videoFile) + "/" +
                                Path.GetFileNameWithoutExtension(videoFile) + ".ogv";
                }
                else if (File.Exists(
                             Application.streamingAssetsPath + "/" +
                             Path.GetDirectoryName(videoFile) + "/" +
                             Path.GetFileNameWithoutExtension(videoFile) + ".ogg"
                             ))
                {
                    videoFile = Path.GetDirectoryName(videoFile) + "/" +
                                Path.GetFileNameWithoutExtension(videoFile) + ".ogg";
                }
                else
                {
                    UpdateState(StateType.Error);
                    throw new Exception("Only support ogv/ogg video format on Standalone platform.");
                }
            }
            WWW wwwReader = new WWW("file:///" + Application.streamingAssetsPath + "/" + videoFile);
            yield return(wwwReader);

            if (wwwReader.error != null)
            {
                UpdateState(StateType.Error);
                Debug.LogError(TAG + " wwwReader error: " + wwwReader.error);
            }
            // Here is an issue in Unity Editor, please ignore the error if you
            // see the error below in console:
            // LoadMoveData got NULL!
            // Error: Cannot create FMOD::Sound instance for resource (null), (An invalid parameter was passed to this function. )
            //
            // Issue:
            // https://issuetracker.unity3d.com/issues/calling-www-dot-movie-fails-to-load-and-prints-error-loadmovedata-got-null
            // https://issuetracker.unity3d.com/issues/movietexture-fmod-error-when-trying-to-play-video-using-www-class
            movieTexture = wwwReader.movie;
            movieRenderer.material.mainTexture = movieTexture;
            audioSource.clip  = movieTexture.audioClip;
            movieTexture.loop = loop;
#endif
            UpdateState(StateType.Initialized);
            StartCoroutine(Prepare());
        }
Exemple #13
0
 void FadeInBegin(UnityEngine.Video.VideoPlayer vp)
 {
     //EventHandler
     Destroy(m_blackOut);
 }
Exemple #14
0
 void FadeInComplete(UnityEngine.Video.VideoPlayer vp)
 {
     //EventHandler
     VideoManager.Instance().DisableImage();
 }
Exemple #15
0
        public void Setup(List <Texture2D> textureList, string videoURL, float?animatedTextureSpeed, ModelComponentType modelComponentType, ModelProperties modelProperties, ModelSharedProperties modelSharedProperties)
        {
            //Debug.Log("videosetup " + gameObject.transform.parent.name + " imagecount " + textureList.Count + " " + videoURL + " " + (videoPlayer == null));

            this.modelProperties       = modelProperties;
            this.modelComponentType    = modelComponentType;
            this.imageList             = null;
            this.modelSharedProperties = modelSharedProperties;
            this.dummyNode             = gameObject.transform.parent.transform.parent.gameObject;

            string layer = LayerMask.LayerToName(gameObject.layer);

            if (layer.StartsWith("Arcade"))
            {
                layerMask   = LayerMask.GetMask("Arcade/ArcadeModels", "Arcade/GameModels", "Arcade/PropModels");
                thisCamera  = ArcadeManager.arcadeCameras[ArcadeType.FpsArcade];
                arcadeLayer = true;
            }
            else
            {
                layerMask   = LayerMask.GetMask("Menu/ArcadeModels", "Menu/GameModels", "Menu/PropModels");
                thisCamera  = ArcadeManager.arcadeCameras[ArcadeType.CylMenu];
                arcadeLayer = false;
            }

            if (ArcadeManager.arcadeConfiguration.arcadeType == ArcadeType.FpsArcade.ToString() || ArcadeManager.arcadeConfiguration.arcadeType == ArcadeType.FpsMenu.ToString())
            {
                isCylArcade = false;
                maxDistance = 5f;
            }
            else
            {
                isCylArcade = true;
                maxDistance = 10000f;
            }

            // Setup image, nescessary for magic pixels and to get an unique material instance.
            Texture2D tex = null;

            if (textureList.Count > 0)
            {
                tex = textureList[0];
            }
            ModelImageSetup modelImageSetup = GetComponent <ModelImageSetup>();

            if (modelImageSetup == null)
            {
                modelImageSetup = gameObject.AddComponent <ModelImageSetup>();
            }
            modelImageSetup.Setup(tex, modelSharedProperties.renderSettings, modelProperties, modelComponentType);

            if (videoURL != null && videoPlayer == null)
            {
                videoPlayer = gameObject.GetComponent <UnityEngine.Video.VideoPlayer>();
            }
            if (animatedTextureSpeed != null)
            {
                waitTime = animatedTextureSpeed.Value;
            }
            videoEnabled = (ModelVideoEnabled)System.Enum.Parse(typeof(ModelVideoEnabled), modelSharedProperties.videoOnModelEnabled);
            if (videoURL == null)
            {
                videoEnabled = ModelVideoEnabled.Never;
            }
            else
            {
                if (videoPlayer != null && videoEnabled != ModelVideoEnabled.Never)
                {
                    videoPlayer.SetDirectAudioMute(0, true);
                    videoPlayer.enabled = true;
                    videoPlayer.url     = videoURL;
                }
            }
            if (textureList.Count > 0)
            {
                imageList = textureList;
                if (renderer != null)
                {
                    renderer.material.mainTexture = textureList[0];
                }
            }
            else
            {
                if (renderer != null && transform.parent.CompareTag("gamemodel") && modelComponentType == ModelComponentType.Screen)
                {
                    renderer.material.mainTexture = Texture2D.blackTexture;
                }
            }
            if (renderer != null && (textureList.Count > 0 || videoEnabled != ModelVideoEnabled.Never))
            {
                SetupVideoPlayer();
            }
        }
Exemple #16
0
 void EndReachedGeneral(UnityEngine.Video.VideoPlayer vp)
 {
     Debug.Log("Video Played");
     isReadyToLoad = true;
     //General Event handler. May still have some bugs because now it's run on 2 coroutines.
 }
Exemple #17
0
        /// <summary>
        /// 繪製轉場圖片
        /// </summary>
        /// <param name="_step">繪製完後要進入的腳本位置</param>
        /// <param name="sceneName">Scene名稱</param>
        private static void DrawSlidePic(int _step)
        {
            GameObject parent;

            switch (KK_FBIOpenUp.nowGameMode)
            {
            case KK_FBIOpenUp.GameMode.Studio:
                parent = GameObject.Find("StudioScene/Canvas Main Menu");
                break;

            case KK_FBIOpenUp.GameMode.MainGame:
                parent = GameObject.Find("ActionScene/UI/ActionMenuCanvas/ModeAnimation");
                break;

            case KK_FBIOpenUp.GameMode.Maker:
                parent = GameObject.Find("CustomScene/CustomRoot/FrontUIGroup/CustomUIGroup/CvsCoordinateType/redBagBtn");
                break;

            //FreeH死都不成功,放棄
            //case KK_FBIOpenUp.GameMode.FreeH:
            //    parent = GameObject.Find("CommonSpace");
            //    break;
            default:
                parent = GameObject.FindObjectsOfType <GameObject>()[0];    //Not tested
                break;
            }
            GameObject gameObject = new GameObject();

            gameObject.transform.SetParent(parent.transform, false);
            gameObject.SetActive(false);
            if (null != shiftPicture)
            {
                GameObject.Destroy(shiftPicture.Transform.parent.gameObject);
                shiftPicture.image = null;
                shiftPicture.video = null;
                shiftPicture       = null;
            }
            shiftPicture = new ShiftPicture();

            //如果影片不存在,用熊吉代替
            bool noVideoFallback = _step == 20 && null == KK_FBIOpenUp.videoPath;

            if (noVideoFallback)
            {
                _step = 2;
            }

            switch (_step)
            {
            case 1:
                //小學生真是太棒了
                shiftPicture.type  = ShiftPicture.Type.picture;
                shiftPicture.image = UIUtility.CreateImage("", gameObject.transform, Extension.Extension.LoadNewSprite("KK_FBIOpenUp.Resources.saikodaze.jpg", 800, 657));
                shiftPicture.image.rectTransform.sizeDelta = new Vector2(Screen.height / 1.5f * 800 / 657, Screen.height / 1.5f);
                Right2Center();
                break;

            case 2:
                //熊吉逮捕
                shiftPicture.type  = ShiftPicture.Type.picture;
                shiftPicture.image = UIUtility.CreateImage("", gameObject.transform, Extension.Extension.LoadNewSprite("KK_FBIOpenUp.Resources.Kumakichi.jpg", 640, 480));
                shiftPicture.image.rectTransform.sizeDelta = new Vector2(Screen.height / 1.5f * 640 / 480, Screen.height / 1.5f);
                Left2Center();
                break;

            case 10:
                //幼女退光線
                shiftPicture.type  = ShiftPicture.Type.picture;
                shiftPicture.image = UIUtility.CreateImage("", gameObject.transform, Extension.Extension.LoadNewSprite("KK_FBIOpenUp.Resources.beam.png", 700, 700));
                shiftPicture.image.rectTransform.sizeDelta = new Vector2(Screen.height / 1.25f, Screen.height / 1.25f);
                Right2Center();
                break;

            case 20:
                //FBI Open Up影片
                shiftPicture.type = ShiftPicture.Type.video;

                shiftPicture.video = UIUtility.CreateRawImage("", gameObject.transform);
                shiftPicture.video.rectTransform.sizeDelta = new Vector2(Screen.height / 1.5f, Screen.height / 1.5f);

                UnityEngine.Video.VideoPlayer videoPlayer = gameObject.AddComponent <UnityEngine.Video.VideoPlayer>();
                AudioSource audioSource = gameObject.AddComponent <AudioSource>();
                videoPlayer.playOnAwake = false;
                audioSource.playOnAwake = false;
                videoPlayer.renderMode  = UnityEngine.Video.VideoRenderMode.APIOnly;

                //videoPlayer.url= "../UserData/audio/FBI.mp4";
                videoPlayer.url = KK_FBIOpenUp.videoPath;

                //Set Audio Output to AudioSource
                videoPlayer.audioOutputMode = UnityEngine.Video.VideoAudioOutputMode.AudioSource;

                //Assign the Audio from Video to AudioSource to be played
                videoPlayer.EnableAudioTrack(0, true);
                videoPlayer.SetTargetAudioSource(0, audioSource);

                Logger.LogDebug($"{videoPlayer.url}");
                videoPlayer.isLooping = true;

                //先把他移到螢幕外啟用,否則未啟用無法Prepare,而直接啟用會出現白色畫面
                shiftPicture.Transform.position = new Vector3(-2 * Screen.width, Screen.height / 2);
                gameObject.SetActive(true);

                videoPlayer.Prepare();
                videoPlayer.prepareCompleted += (source) => {
                    ///TODO 這實際上沒有辦法真的catch到錯誤,待修
                    if (videoPlayer.texture == null)
                    {
                        Logger.LogError("Video not found");
                        GameObject.Destroy(shiftPicture.Transform.parent.gameObject);
                        shiftPicture.video = null;
                        shiftPicture       = null;
                        _step = 0;
                        return;
                    }

                    shiftPicture.video.texture = videoPlayer.texture;
                    videoTimer = 2;
                    videoPlayer.Play();
                    audioSource.Play();

                    //影片太大聲QQ
                    audioSource.volume = KK_FBIOpenUp.videoVolume;

                    Left2Center();
                };
                break;
            }

            //如果影片不存在,用熊吉代替
            if (noVideoFallback)
            {
                _step = 20;
            }

            step = _step;
            Logger.LogDebug("Draw Slide Pic");

            void Right2Center()
            {
                //Right To Center
                shiftPicture.Transform.position = new Vector3(Screen.width + shiftPicture.Width / 2, Screen.height / 2);
                shiftPicture.targetPosition     = new Vector3(Screen.width / 2, Screen.height / 2);
                gameObject.SetActive(true);
            }

            void Left2Center()
            {
                //Left To Center
                shiftPicture.Transform.position = new Vector3(-1 * (Screen.width + shiftPicture.Width / 2), Screen.height / 2);
                shiftPicture.targetPosition     = new Vector3(Screen.width / 2, Screen.height / 2);
                gameObject.SetActive(true);
            }
        }
 public void OnVideoLoadingComplete(UnityEngine.Video.VideoPlayer player)
 {
     VideoLoaded = true;
     Events.OnClipLoadingFinished();
 }
        static internal void Lua_UnityEngine_Video_VideoPlayer_FrameReadyEventHandler(LuaFunction ld, UnityEngine.Video.VideoPlayer a1, System.Int64 a2)
        {
            IntPtr l     = ld.L;
            int    error = pushTry(l);

            pushValue(l, a1);
            pushValue(l, a2);
            ld.pcall(2, error);
            LuaDLL.lua_settop(l, error - 1);
        }
Exemple #20
0
 void VideoPlayer_LoopPointReached(UnityEngine.Video.VideoPlayer source)
 {
     completedGameObject.SendMessage(completedMethodName);
 }