如何在Unity中播放视频?

提要:在Unity 中 视频支持.mov、.mpg、.mpeg、.mp4、.avi和.asf。而Unity对于视频都是以MovieTexture来使用的。
如果视频中有声音那么在视频文件下面会相应生成audio文件。所以一个完整的视频播放是应该画面和音频的同步播放。

       方法一:基于GameObject上,这种方式可以让影片以任何方式播放,比如你要实现一个教室,教室讲台上有个投影幕,电影应当在投影幕上播放。这样影片播放就是实打实的在荧幕这个游戏GameObject上面播放。
       实现方法:就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面,首先你要在播放的地方加个plane。上面挂一个 Play 脚本。

using UnityEngine;
using System.Collections;
 
public class Play : MonoBehaviour
{
 
    //电影纹理
    public MovieTexture movTexture; //播放视频要用到的MovieTexture属于贴图Texture的子类
    public AudioSource audioSource;
    void Start()
    {
        //设置当前对象的主纹理为电影纹理
        renderer.material.mainTexture = movTexture;
        //设置电影纹理播放模式为循环
        movTexture.loop = true;
        //如果有声音才播放声音
        audioSource = GetComponent<AudioSource>();
    }
    public void OnPlay()
    {<pre name="code" class="csharp">  <span style="white-space:pre">	</span>if(!movTexture.isPlaying)
<span style="white-space:pre">	</span>{
<pre name="code" class="csharp"> <span style="white-space:pre">	</span>    movTexture.Play();
       //   audioSource.Play();

 
<span style="white-space:pre">	</span>}
} public void OnPause() { movTexture.Pause(); // audioSource.Pause(); } public void OnStop() { movTexture.Stop(); // audioSource.Stop(); }}
 
我们将视频生成的 
MovieTexture 
拖放复制到movTexture 
中,如果有声音,应当给plane添加AudioSource组件并把把生成的音频文件拖放到AudioClip处。脚本中给出了三个函数分别对应的是 
视频的播放、暂停、停止。 


方法二:基于Unity 的OnGUI实现,这样视频就是以UI元素存在于游戏中。

实现方法:这种方法不需要载体。直接可以将脚本挂在Mamera上。

using UnityEngine;
using System.Collections;
 
public class Play : MonoBehaviour
{
 
    //电影纹理
    public MovieTexture movTexture;
    public AudioSource audioSource;
    void Start()
    {
        //设置电影纹理播放模式为循环
        movTexture.loop = true;
        //如果有声音才播放声音
        audioSource = GetComponent<AudioSource>();
    }
 
    void OnGUI()
    {
        //绘制电影纹理
        GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), movTexture, ScaleMode.StretchToFill);
    }
    public void OnPlay()
    {
        movTexture.Play();
        // audioSource.Play();
    }
    public void OnPause()
    {
        movTexture.Pause();
        // audioSource.Pause();
    }
    public void OnStop()
    {
        movTexture.Stop();
        // audioSource.Stop();
    }
 
}


//在移动设备上播放视频
public class Test : MonoBehaviour {
  
void OnGUI()
    {
        if (GUI.Button (new Rect (20,10,200,50), "PLAY ControlMode.CancelOnTouch")) 
        {
            Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
        }
  
        if (GUI.Button (new Rect (20,90,200,25), "PLAY ControlMode.Full")) 
        {
            Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Full);
        }
  
        if (GUI.Button (new Rect (20,170,200,25), "PLAY ControlMode.Hidden")) 
        {
            Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Hidden);   
        }
  
        if (GUI.Button (new Rect (20,250,200,25), "PLAY ControlMode.Minimal")) 
        {
            Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Minimal);
        }
    }
}
直接使用第三方插件AVPro QuickTime来播放视频。


  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值