【Unity3d】使用MovieTexture和Image实现简单的播放器

很久之前拜读过雨松大神关于u3d中播放视频的文章Unity3D研究院之两种方式播放游戏视频(二十五)。最近项目中有需要简单的视频播放的,但使用plane和GUI都不是很合适,于是试了一下直接使用Image控件,果然也是可以的。当然需要更强大的功能还是需要借助插件实现。
首先导入我们的视频文件,Unity支持.mov, .mpg, .mpeg, .mp4, .avi, .asf等视频格式,详细可以查询官方文档。导入视频之前需要安装QuickTime。如果在打开项目之后再安装的QuickTime,则需要重启一下项目。然后编辑一下我们的脚本,定义MovieTexture变量,负责影片播放的Image变量和负责声音播放的AudioSource变量,初始化播放器将image材质的mainTexture设为movie。

public Image image;
public MovieTexture movie;
public AudioSource audioPlayer;
image.material.mainTexture = movie;

定义播放器的播放,暂停,停止方法

public void Play()
{
    movie.Play();
    audioPlayer.Play();
}

public void Stop()
{
    movie.Stop();
    audioPlayer.Stop();
}

public void Pause()
{
    movie.Pause();
    audioPlayer.Pause();
}

新建一个Image物体和AudioSource物体,将我们导入的视频文件中的音频拖给AudioSource,然后将视频文件拖给MoviePlayer的movie,Image拖给image,AudioSource拖给audioPlayer。然后调用Play方法即可播放。

场景文件结构:
场景文件结构

MVImage的设置:
MVImage的设置

audio的设置:
audio的设置

运行效果(视频使用的是武士桑的Snow Halation指弹视频):
运行效果

也可以使用WWW加载程序外部视频,将WWW读取的MovieTexture赋值给MoviePlayer的movie,将WWW读取的MovieTexture的audioClip变量赋值给AudioSource的clip变量。

以下是MoviePlayer的完整代码:
MoviePlayer.cs:

using UnityEngine;
using UnityEngine.UI;

public class MoviePlayer : MonoBehaviour
{

    public Image image;
    public MovieTexture movie;
    public AudioSource audioPlayer;

    void Awake()
    {
        image.material.mainTexture = movie;
        Play();
    }

    public void Play()
    {
        movie.Play();
        audioPlayer.Play();
    }

    public void Stop()
    {
        movie.Stop();
        audioPlayer.Stop();
    }

    public void Pause()
    {
        movie.Pause();
        audioPlayer.Pause();
    }
}

By: 蒋志杰

发布了69 篇原创文章 · 获赞 83 · 访问量 42万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览