我是靠谱客的博主 强健饼干,最近开发中收集的这篇文章主要介绍Unity AVPro video 开始播放,播放完成事件监听,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

代码播放: 低版本的路径播放api 不是这个 

2.2.4 AVPro Video - Core Edition (核心版)

bool isOpening = mediaPlayer.OpenMedia(new MediaPath("VIdeos/PXPGameRule.mp4", MediaPathType.RelativeToStreamingAssetsFolder), autoPlay: true);

GetComponent<DisplayUGUI>().CurrentMediaPlayer = mediaPlayer;

功能:htc 手柄按下touchpad 或者 Grap 播放全景视频 

using RenderHeads.Media.AVProVideo;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;

public class ViveControllerInput : MonoBehaviour
{
    public MediaPlayer _mediaPlayer;
    public SteamVR_Action_Boolean m_TeleportAction; // 圆盘按下事件
    public SteamVR_Action_Boolean m_GrapPinchAction; // Grap 按下事件
    public SteamVR_Action_Single m_GrapPowerAction;  // Grap 按下程度
    public SteamVR_Action_Vector2 m_TeleportMoveAction; // 圆盘触摸事件
    public SteamVR_Behaviour_Pose[] m_pose; // 获取手柄上的 SteamVR_Behaviour_Pose 组件
    bool isPlaying = false;
    private void Start()
    {
        _mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
    }
    void Update()
    {
       
        for (int i = 0; i < m_pose.Length; i++)
        {
            if (m_TeleportAction.GetStateDown(m_pose[i].inputSource)|| m_GrapPinchAction.GetStateDown(m_pose[i].inputSource))
            {
                Debug.Log("任意一个手柄的Teleport圆盘按下 或者是  grap键 按下");
                if (!isPlaying)
                {
                    StartMovie("/AVProVideoSamples/SampleSphere.mp4");
                    Debug.Log("播放或者重新播放");
                }
            }
        }
        
         Teleport 圆盘触摸坐标数据获取
        //Vector2 TeleportPos = m_TeleportMoveAction.GetAxis(SteamVR_Input_Sources.Any);
        //Debug.Log("TeleportPos" + TeleportPos);
        //if (TeleportPos != Vector2.zero)
        //{
        //    // Debug.Log("TeleportPos" + TeleportPos);
        //}

         Grap 按下程度
        //float m_GrapPower = m_GrapPowerAction.GetAxis(SteamVR_Input_Sources.Any);
        //Debug.Log(m_GrapPower);
    }

    public void OnMediaPlayerEvent(MediaPlayer mp,MediaPlayerEvent.EventType et,ErrorCode errorCode)
    {
        switch (et)
        {
            case MediaPlayerEvent.EventType.Started:
                print("startedEvent开始事件触发");
                OnMediaPlayerStarted(mp);
                break;
            case MediaPlayerEvent.EventType.FinishedPlaying:
                print("finishedEvent结束事件触发");
                OnMediaPlayerFinished(mp);
                break;
        }

    }
    void StartMovie(string mp4Str) {
        _mediaPlayer.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, Application.streamingAssetsPath + mp4Str, true);
        _mediaPlayer.m_Loop = false;
        _mediaPlayer.Play();
       
    }
    /// <summary>
    /// 开始事件触发
    /// </summary>
    /// <param name="mp"></param>
    void OnMediaPlayerStarted(MediaPlayer mp)
    {
        print("开始事件触发的后续");
        isPlaying = true;
    }
    /// <summary>
    /// 结束事件触发
    /// </summary>
    /// <param name="mp"></param>
    void OnMediaPlayerFinished(MediaPlayer mp)
    {
        print("结束事件触发的后续");
        isPlaying = false;
    }

}

事件监听的方法转载自:

Unity视频插件AVPro Video的事件管理_thinkcg的博客-CSDN博客

最后

以上就是强健饼干为你收集整理的Unity AVPro video 开始播放,播放完成事件监听的全部内容,希望文章能够帮你解决Unity AVPro video 开始播放,播放完成事件监听所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部