EasyAR尝鲜系列教程之视频播放功能代码
来源:互联网 发布:hashmap源码 编辑:程序博客网 时间:2024/04/29 22:14
这个增强ImageTarget是指在ImageTarget的基础上融入VideoPlayerBehaviour的功能,因为按照官方的示例来考虑,这两部分功能是独立的,博主希望让大家在制作识别图的时候完全忘记区别ImageTarget和VideoTarget,这样我们可以更为专注地制作识别图,因为视频组件就只是设置参数这一件事情,完全可以一次性搞定,所以我们首先来定义一个VideoTargetBaseBehaviour类,一起来看代码:
{
/// <summary>
/// 视频播放模块
/// </summary>
private VideoPlayerBehaviour videoPlayer;
/// <summary>
/// 视频文件路径
/// </summary>
public string VideoPath;
/// <summary>
/// 是否自动播放视频
/// </summary>
public bool VideoEnableAutoPlay = true;
/// <summary>
/// 是否允许视频循环
/// </summary>
public bool VideoEnableLoop = true;
/// <summary>
/// 视频类型
/// </summary>
public VideoPlayer.VideoType VideoType = VideoPlayer.VideoType.TransparentSideBySide;
/// <summary>
/// 视频资源类型
/// </summary>
public StorageType VideoStorage = StorageType.Assets;
/// <summary>
/// 视频是否加载
/// </summary>
private bool isVideoLoaded;
protected override void Start()
{
//在Start方法中加载视频、隐藏模型
base.Start();
LoadVideo();
HideObjects(transform);
}
/// <summary>
/// 加载视频
/// </summary>
private void LoadVideo()
{
//创建子物体VideoObject并为其添加视频组件
GameObject VideoObject = new GameObject("VideoObject");
videoPlayer = VideoObject.AddComponent<VideoPlayerBehaviour>();
VideoObject.transform.SetParent(transform);
VideoObject.transform.localPosition = Vector3.zero;
VideoObject.transform.localRotation = Quaternion.identity;
VideoObject.transform.localScale = Vector3.one;
//设置视频组件相关参数
videoPlayer.Storage = VideoStorage;
videoPlayer.Path = VideoPath;
videoPlayer.EnableAutoPlay = VideoEnableAutoPlay;
videoPlayer.EnableLoop = VideoEnableLoop;
videoPlayer.Type = VideoType;
videoPlayer.VideoReadyEvent+=videoPlayer_VideoReadyEvent;
videoPlayer.VideoReachEndEvent+=videoPlayer_VideoReachEndEvent;
videoPlayer.VideoErrorEvent+=videoPlayer_VideoErrorEvent;
videoPlayer.Open();
videoPlayer.Play();
}
#region 视频组件相关事件定义
public virtual void videoPlayer_VideoErrorEvent(object sender, System.EventArgs e)
{
}
public virtual void videoPlayer_VideoReachEndEvent(object sender, System.EventArgs e)
{
}
public virtual void videoPlayer_VideoReadyEvent(object sender, System.EventArgs e)
{
}
#endregion
/// <summary>
/// 隐藏模型的方法
/// </summary>
/// <param name="trans">要隐藏的Transform</param>
void HideObjects(Transform trans)
{
for (int i = 0; i < trans.childCount; ++i)
HideObjects(trans.GetChild(i));
if (transform != trans)
gameObject.SetActive(false);
}
/// <summary>
/// 显示模型的方法
/// </summary>
/// <param name="trans">要显示的Transform</param>
public void ShowObjects(Transform trans)
{
for (int i = 0; i < trans.childCount; ++i)
ShowObjects(trans.GetChild(i));
if (transform != trans)
gameObject.SetActive(true);
}
/// <summary>
/// 实现ITargetEventHandler接口中的OnTargetFound方法
/// </summary>
/// <param name="target">识别目标</param>
void ITargetEventHandler.OnTargetFound(Target target)
{
if (videoPlayer)
videoPlayer.Play();
ShowObjects(transform);
}
/// <summary>
/// 实现ITargetEventHandler接口中的OnTargetLost方法
/// </summary>
/// <param name="target">识别目标</param>
void ITargetEventHandler.OnTargetLost(Target target)
{
if (videoPlayer)
videoPlayer.Pause();
HideObjects(transform);
}
/// <summary>
/// 实现ITargetEventHandler接口中的OnTargetLoad方法
/// </summary>
/// <param name="target">识别目标</param>
void ITargetEventHandler.OnTargetLoad(Target target, bool status)
{
}
/// <summary>
/// 实现ITargetEventHandler接口中的OnTargetUnload方法
/// </summary>
/// <param name="target">识别目标</param>
void ITargetEventHandler.OnTargetUnload(Target target, bool status)
{
}
}
在这段代码中博主采用了动态创建视频组件的方法,这样我们在制作VideoTarget的时候只需要按照以下步骤即可:
* 在Assets/EasyAR/Prefabs目录下找到EasyAR这个预制体,添加EasyARConfig组件,然后填写KEY。
* 在Assets/EasyAR/Prefabs目录中找到ImageTarget这个预制体,然后使用VideoTargetBaseBehaviour组件替换默认的ImageTargetBehaviour组件。
* 在Assets/EasyAR/Prefabs目录下找到EasyAR这个预制体,添加EasyARConfig组件,然后填写KEY。
* 在Assets/EasyAR/Prefabs目录中找到ImageTarget这个预制体,然后使用VideoTargetBaseBehaviour组件替换默认的ImageTargetBehaviour组件。
0 0
- EasyAR尝鲜系列教程之视频播放功能代码
- EasyAR尝鲜系列教程之视频播放功能的实现
- EasyAR尝鲜系列教程之视频播放功能的实现
- EasyAR尝鲜系列教程之Hello EasyAR
- EasyAR尝鲜系列教程之自定义Marker的实现
- EasyAR尝鲜系列教程之ImageTarget千呼万唤始出来
- easyar unity3d播放视频
- EasyAR开发教程第二弹--AR 视频的识别与播放
- EasyAR从入门到精通开发系列教程(4)---脱卡功能总结
- EasyAR 开发教程系列1--小试牛刀
- Unity系列之EasyAR——ImageTarget
- HTML5网络视频之webm尝鲜
- HTML5网络视频之webm尝鲜
- Android版添加phonegap--InAndroid视频播放功能插件教程
- Android 视频播放器笔记之播放器实例代码
- asp.NET实现视频播放器功能代码
- EasyAR开发教程
- iOS开发系列之二--音频播放、录音、视频播放、拍照、视频录制
- iOS检测是否开启定位、是否允许消息通知
- yii 如何使用 CWebLogRoute 记录和调试变量
- axure产品原型在手机上运行
- 正反箭头旋转动画
- HDU 5188 zhx and contest 01背包的变形
- EasyAR尝鲜系列教程之视频播放功能代码
- 实现git hooks自动持续部署
- 00
- 软件的生命周期
- UIWebView加载本地html
- 检测苹果设备是否越狱
- Linux下安装Redis
- edittext的可编辑和不可编辑
- C++实验6-数组操作