KING_U3D学习之Unity播放视频解决方案
2016-01-10 23:03
435 查看
今天早上在一个项目里看到有个需求,在unity3d里面播放视频,一开始还以为很简单,殊不知从早上搞到现在,终于理清思路了。网上的资料五花八门,我就是因为太相信网上的资料,才导致走了这么多弯路、、、、,在此,我提供一下在unity播放视频的解决方案以及在实际操作时的注意事项,免得像我今天一样被蒙来蒙去,希望对你有帮助。
一、unity播放视频方案:
1、在游戏对象中利用movie texture播放
unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。
首先,把符合以上格式的视频文件从外面“拖进”(记得是从电脑文件拖回unity,如果打开unity前就放在项目文件里,unity识别不了,我今天就是因为这个一直在转格式上转来转去,什么必须安装quicktime,什么格式转换工具等等,如果你真的需要转格式,有个工具还挺好用,你可以参考这个:/article/3640319.html)unity的asset文件下(其他文件夹不行),unity自动把视频文件生成movie
texture文件,如果视频中含有音频,会对应生成audio文件;
然后,在场景中新建有renderer(material)的物体,如plane,为这个物体添加audio source和自定义的视频控制脚本playMovieTest.cs, 把导入的视频文件挂到脚本的Movie Texture处进行赋值。
代码如下:
最后,运行测试,本人用.mp4格式测试,可以用。
以上方式只能在pc使用,若在移动端android/ios中,一定要把视频文件放在StreamingAssets文件夹下,然后直接把下面的脚本挂在摄像机上,即可。
2、利用easy movie texture插件处理
这个插件收费,里面的具体处理方式我没仔细看,用到可以用的。注意这个插件只能在android/ios中使用,在pc或编辑器不可用。
参考:
http://www.xuanyusong.com/archives/1019
一、unity播放视频方案:
1、在游戏对象中利用movie texture播放
unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。
首先,把符合以上格式的视频文件从外面“拖进”(记得是从电脑文件拖回unity,如果打开unity前就放在项目文件里,unity识别不了,我今天就是因为这个一直在转格式上转来转去,什么必须安装quicktime,什么格式转换工具等等,如果你真的需要转格式,有个工具还挺好用,你可以参考这个:/article/3640319.html)unity的asset文件下(其他文件夹不行),unity自动把视频文件生成movie
texture文件,如果视频中含有音频,会对应生成audio文件;
然后,在场景中新建有renderer(material)的物体,如plane,为这个物体添加audio source和自定义的视频控制脚本playMovieTest.cs, 把导入的视频文件挂到脚本的Movie Texture处进行赋值。
代码如下:
using UnityEngine; using System.Collections; public class PlayMovieTest : MonoBehaviour { // 电影纹理 public MovieTexture MovTexture; // 视频屏幕大小 public float MovieSize = 1; // Use this for initialization void Start() { // 设置当前对象的主纹理为电影纹理 GetComponent<Renderer>().material.mainTexture = MovTexture; // 设置电影纹理播放模式为循环模式 MovTexture.loop = true; } // Update is called once per frame void Update() { transform.localScale = new Vector3(MovieSize,1,1); } /// <summary> /// 播放视频 /// </summary> public void PlayMovie() { if (!MovTexture.isPlaying) { MovTexture.Play(); } } /// <summary> /// 暂停视频 /// </summary> public void PauseMovie() { MovTexture.Pause(); } /// <summary> /// 停止视频 /// </summary> public void StopMovie() { MovTexture.Stop(); } }
最后,运行测试,本人用.mp4格式测试,可以用。
以上方式只能在pc使用,若在移动端android/ios中,一定要把视频文件放在StreamingAssets文件夹下,然后直接把下面的脚本挂在摄像机上,即可。
using UnityEngine; using System.Collections; public class MobilePlayMovieTest : MonoBehaviour { void OnGUI() { // 视频播放时,触摸屏幕视频关闭 if (GUI.Button(new Rect(20, 10, 200, 50), "PLAY ControlMode.CancelOnTouch")) { Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput); } // 视频播放时,弹出IOS高级控件,控制视频暂停/播放、全屏等 if (GUI.Button(new Rect(20, 90, 200, 25), "PLAY ControlMode.Full")) { Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.Full); } // 视频播放时,无法停止,当其播放完一次后自动关闭 if (GUI.Button(new Rect(20, 170, 200, 25), "PLAY ControlMode.Hidden")) { Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.Hidden); } // 视频播放时弹出IOS高级控件,可控制播放进度 if (GUI.Button(new Rect(20, 250, 200, 25), "PLAY ControlMode.Minimal")) { Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.Minimal); } } }
2、利用easy movie texture插件处理
这个插件收费,里面的具体处理方式我没仔细看,用到可以用的。注意这个插件只能在android/ios中使用,在pc或编辑器不可用。
参考:
http://www.xuanyusong.com/archives/1019
相关文章推荐
- Unity打包的APK中Asset文件分析
- 【Unity入门】场景、游戏物体和组件的概念
- Unity-Animator在Editor状态下的单个/批量预览工具
- [Unity3D]脚本中Start()和Awake()的差别
- 【Unity入门】编辑器常用视图介绍
- Unity3d中3D数学Vector3
- 【Unity Shader】unity海边波浪效果的实现
- unity3d--动态加载资源和查找资源的方式(1)
- Egret3D研究报告(二)从Unity3D导出场景到Egret3D
- unity3d中对枚举的使用--高度提取接口方法
- 用ETC压缩Unity图片资源
- 【Unity Shader】手游中高光效果的几种实现方法
- Unity之动态加载场景资源
- 【Unity入门】编辑器常用视图介绍
- Unity_Shader开发_图形学基础(五)--------2016.1.9
- 【Unity闲谈】自动处理2.5D(伪3D)游戏中 物体的遮挡关系
- unity 架构设计的学习
- 总结使用Unity3D优化游戏运行性能的经验
- Unity 解决 An asset is marked with HideFlags.DontSave but is included in the build 问题。
- 关于Unity3D接入SDK之后,游戏中的文字输入框无法输入内容的问题