纳金网

标题: 【原创】Unity3d PC IOS平台播放视频的详解(带源码) - Faye Euler [打印本页]

作者: faye euler    时间: 2012-11-12 12:47
标题: 【原创】Unity3d PC IOS平台播放视频的详解(带源码) - Faye Euler
本文由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下,否则找不到视频

PlayVideo - faye euler.rar

0 Bytes, 下载次数: 217


作者: faye euler    时间: 2012-11-12 13:02
这篇文章上周写的。。。发布了很多次才成功,囧。。。
作者: 艾西格亚    时间: 2012-11-12 16:26
原帖由  faye euler  于 2012-11-12 13:02 发表:

                                                                                        这篇文章上周写的。。。发布了很多次才成功,囧。。。
                                                                               
-----------------------------------------------------
这样啊?听说是上周在调整网站。。

作者: fgdf#dfg    时间: 2012-11-13 12:55

作者: 比巴卜    时间: 2012-11-20 09:34
赞赞!!!
作者: Zack    时间: 2012-11-23 11:51
学习了,谢谢!!
作者: 冰点    时间: 2012-11-23 16:06
wed 3d 纳金网
作者: 冰点    时间: 2012-11-23 16:07
wed 3d 纳金网
作者: may    时间: 2012-11-30 03:08
支持楼主
作者: look12    时间: 2013-1-7 11:30
学习了,谢谢!!!!!!!!!!

作者: 雪白的肚皮    时间: 2013-1-23 12:31
要的就是这个效果。多谢
作者: 无敌    时间: 2013-1-24 02:26
楼主的教程非常的详细
作者: 狂风大尉    时间: 2013-1-29 17:05
希望更多的朋友分享制作经验


作者: animan    时间: 2013-2-22 22:38
!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 崇尚现在    时间: 2013-2-23 20:29
很好啊 谢谢了 哈哈

作者: 客马    时间: 2013-2-23 23:00
不知道性能怎么样?下载试试

作者: hariboot    时间: 2014-6-7 12:55
在IOS和ANDROID上测试过了都不行
作者: Kadina    时间: 2014-6-7 13:04
支持楼主




欢迎光临 纳金网 (http://wwww.narkii.com/club/) Powered by Discuz! X2.5