12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 10791|回复: 17
打印 上一主题 下一主题

[教程] 【原创】Unity3d PC IOS平台播放视频的详解(带源码) - Faye Euler

[复制链接]

4

主题

1

听众

32

积分

设计初学者

Rank: 1

纳金币
3
精华
0

活跃会员 灌水之王

跳转到指定楼层
楼主
发表于 2012-11-12 12:47:39 |只看该作者 |倒序浏览
本文由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

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

4

主题

1

听众

32

积分

设计初学者

Rank: 1

纳金币
3
精华
0

活跃会员 灌水之王

沙发
发表于 2012-11-12 13:02:22 |只看该作者
这篇文章上周写的。。。发布了很多次才成功,囧。。。
回复

使用道具 举报

955

主题

164

听众

7万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
59338
精华
28

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

板凳
发表于 2012-11-12 16:26:49 |只看该作者
原帖由  faye euler  于 2012-11-12 13:02 发表:

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

使用道具 举报

0

主题

1

听众

-18

积分

限制会员

纳金币
-15
精华
0
地板
发表于 2012-11-13 12:55:43 |只看该作者
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-11-20 09:34:06 |只看该作者
赞赞!!!
回复

使用道具 举报

Zack    

459

主题

1

听众

5478

积分

高级设计师

Rank: 6Rank: 6

纳金币
5531
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-11-23 11:51:56 |只看该作者
学习了,谢谢!!
回复

使用道具 举报

498

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
13519
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-11-23 16:06:53 |只看该作者
wed 3d 纳金网
回复

使用道具 举报

498

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
13519
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-11-23 16:07:21 |只看该作者
wed 3d 纳金网
回复

使用道具 举报

may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52336
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

9#
发表于 2012-11-30 03:08:02 |只看该作者
支持楼主
回复

使用道具 举报

0

主题

5

听众

754

积分

初级设计师

Rank: 3Rank: 3

纳金币
221
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2013-1-7 11:30:20 |只看该作者
学习了,谢谢!!!!!!!!!!
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-27 11:58 , Processed in 0.106813 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部