- 最后登录
- 2016-5-9
- 注册时间
- 2012-8-10
- 阅读权限
- 10
- 积分
- 32
- 纳金币
- 3
- 精华
- 0
|
本文由Faye個人原創,納金網和Faye共同擁有使用權,未經允許轉載保留追究法律責任權利
今天Faye给大家说说unity3d播放视频的方法,本次例子涵盖了PC平台,IOS平台的视频播放方法。废话不多数,下面马上开始:
首先说在PC平台下面的方法:
真相图
我们新建一个C# Script,命名为PCPlayVideoOnGUI.CS
下面开始写代码:
首先我们定义MovieTexture类型和AudioCli类型的两个变量MyVideo和VideoMusic
MyVideo用于放置我们的视频,VideoMusic用于放置视频里面的音频。
我这里播放的视频自带音频的,我们首先要获取视频里面的音频
VideoMusic = MyVideo.audioClip;
然后播放视频
MyVideo.Play();
这里Play只需要执行一次,不然会悲剧哦,你想想不断地按DVD机的Play按钮会怎样?你懂的
然后设置视频是否会循环播放,默认是不会循环播放的,播放完就黑屏
MyVideo.loop = ***e;
播放视频的话,挂音频脚本的物体必须有个音源(没有音源的话,怎么发音呢),然后将我们的音频赋给音源audio.clip
gameObject.AddComponent<AudioSource>();
audio.clip = VideoMusic;
audio.Play();
视频显示,我们这里用的是OnGUI方法,把视频当一个图片那样写,搞定!
GUI.DrawTexture(new Rect(100,100,MyVideo.width,MyVideo.height),MyVideo);
完整代码如下:
using UnityEngine;
using System.Collections;
public class PCPlayVideoOnGUI : MonoBehaviour {
public MovieTexture MyVideo;
public AudioClip VideoMusic;
// Use this for initialization
void Start () {
if(MyVideo != null)
{
VideoMusic = MyVideo.audioClip;
}
MyVideo.Play();
MyVideo.loop = ***e;
gameObject.AddComponent<AudioSource>();
audio.clip = VideoMusic;
audio.Play();
}
void OnGUI ()
{
GUI.DrawTexture(new Rect(100,100,MyVideo.width,MyVideo.height),MyVideo);
}
}
播放视频除了用OnGUI,还能当贴图那样用,这个方法,会快一点,而且可以把视频倾斜一定角度播放,好,有图有真相
新建脚本PCPlayVideoOnMaterial.CS
首先我们定义MovieTexture类型和AudioCli类型的两个变量MyVideo和VideoMusic
MyVideo用于放置我们的视频,VideoMusic用于放置视频里面的音频。
由于我们这次是将视频当贴图用,所以我们需要个plane,其实尼玛用神马球,圆柱都行的
GameObject plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
然后设置plane的材质
plane.renderer.material = new Material ( Shader.Find ("Self-Illumin/VertexLit"));
经典的来了,将视频赋予给plane的mainTexture
plane.renderer.material.mainTexture = MyVideo;
然后设置plane的角度,大小
plane.transform.localEulerAngles = new Vector3(90,140,0);
plane.transform.localScale = new Vector3(1.5f,1f,1);
下面的跟OnGUI没什么区别了,就不罗嗦
if(MyVideo != null)
{
VideoMusic = MyVideo.audioClip;
}
MyVideo.Play();
MyVideo.loop = ***e;
gameObject.AddComponent<AudioSource>();
audio.clip = VideoMusic;
audio.Play();
完整代码如下:
using UnityEngine;
using System.Collections;
public class PCPlayVideoOnMaterial : MonoBehaviour {
public MovieTexture MyVideo;
public AudioClip VideoMusic;
// Use this for initialization
void Start () {
GameObject plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
plane.renderer.material = new Material ( Shader.Find ("Self-Illumin/VertexLit"));
plane.renderer.material.mainTexture = MyVideo;
plane.transform.localEulerAngles = new Vector3(90,140,0);
plane.transform.localScale = new Vector3(1.5f,1f,1);
if(MyVideo != null)
{
VideoMusic = MyVideo.audioClip;
}
MyVideo.Play();
MyVideo.loop = ***e;
gameObject.AddComponent<AudioSource>();
audio.clip = VideoMusic;
audio.Play();
}
}
下面介绍第三种,ios播放方法:
由于IOS上面播放视频,是不能用MovieTexture神马的,如果不用插件的话,只能用ios的自带play播放,如果想在上面层叠神马的,别想太多了。。。
有两种方法,代码不多
iPhoneUtils.PlayMovie("IHSG_smash.ogg",Color.black,iPhoneMovieControlMode.CancelOnTouch);
这是一种旧的方法,新版本unity已经提供了新的API
Handheld.PlayFullScreenMovie("IHSG_smash.ogg",Color.black,FullScreenMovieControlMode.CancelOnInput);
用这类方法加载视频的话,视频必须放在Assets文件的StreamingAssets下,否则找不到视频
|
|