在Unity3D发布的WebGL中实现场景视频播放的功能

Unity场景中播放视频可以通过在3D的Cube面上添加MovieTexture得来,但在最终生成WebGL应用时会报错,原因是Web端不支持MovieTexture的播放,网上查阅了许多资料,整理了一下,也让后来者少走点弯路。
 
1.首先需要下载一个名为Simple MovieTextures for Unity WebGL的Unity插件,插件下载链接:
链接:https://pan.baidu.com/s/1JJBYiSg5adz5Q2iUWf7E_g 
提取码:zyg2
 
2.将插件下载后导入Unity
导入的unitypackage文件的组成如下,可以看到Sample中有一个demo场景和VideoTest脚本,这两个文件可以让我们快速应用,插件的功能能可以通过README.txt查看。
加载上图中的SampleScene场景,并打开VideoTest脚本查看使用方法。场景中只包括一个Cube,将脚本放入并 生成WebGL即可看到播放效果。(注意,不能直接调试!)
3.代码分析
打开 VideoTest脚本,对代码进行分析。
 
头文件(除了两个基本的,还要加入第三个)
 
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
Start()方法         
    WebGLMovieTexture tex;    //创建视频纹理信息
            public GameObject cube;    //选取视频播放所用的Cube

            void Start () {
                        tex = new WebGLMovieTexture("StreamingAssets/Chrome_ImF.mp4");
                        cube.GetComponent<MeshRenderer>().material = new Material (Shader.Find("Diffuse"));
                        cube.GetComponent<MeshRenderer>().material.mainTexture = tex;
            }
 
 
Update()方法
 
void Update()
            {
                        tex.Update();
                        cube.transform.Rotate (Time.deltaTime * 10, Time.deltaTime * 30, 0);
            }
 
并且提供了GUI控件功能
 
            void OnGUI()
            {
                        GUI.enabled = tex.isReady;
                        
                        GUILayout.BeginHorizontal();
                        if (GUILayout.Button("Play"))    //播放按钮
                                    tex.Play();
                        if (GUILayout.Button("Pause"))    //暂停按钮
                                    tex.Pause();
                        tex.loop = GUILayout.Toggle(tex.loop, "Loop");    //是否循环
                        GUILayout.EndHorizontal();

                        var oldT = tex.time;
                        var newT = GUILayout.HorizontalSlider (tex.time, 0.0f, tex.duration);
                        if (!Mathf.Approximately(oldT, newT))
                                    tex.Seek(newT);

                        GUI.enabled = true;
            }
 
为了只实现播放功能,只使用如下代码即可。
 
WebGLMovieTexture tex;    //创建视频纹理信息
            public GameObject cube;    //选取视频播放所用的Cube

            void Start () {
                        tex = new WebGLMovieTexture("StreamingAssets/Chrome_ImF.mp4");
                        cube.GetComponent<MeshRenderer>().material = new Material (Shader.Find("Diffuse"));
                        cube.GetComponent<MeshRenderer>().material.mainTexture = tex;
            }

void Update()
            {
                        tex.Update();
                        tex.Play();
            }
 
即可实现基本功能。
 
效果如下
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
Unity3D是一款功能强大的游戏引擎,可以用来开发各种类型的游戏和应用程序。其,导出WebGL格式是Unity3D的一个重要功能,它使得我们可以将游戏或应用程序直接发布到Web上,让用户可以通过浏览器来访问和体验。 使用Unity3D导出WebGL格式非常简单。首先,我们需要确保在Unity我们的项目已经设置好了所需的场景、模型、材质和脚本等。然后,我们可以选择菜单栏的"Build Settings"选项,打开一个设置窗口。 在"Build Settings"窗口,我们需要选择"WebGL"作为目标平台,并设置一些导出选项。例如,我们可以选择导出的文件名和保存的路径。我们还可以选择是否需要压缩文件,以及是否需要在导出过程进行连接和优化操作。 当我们设置好导出选项后,只需点击"Build"按钮,Unity3D将开始导出我们的项目为WebGL格式。这个过程可能需要一些时间,具体取决于我们的项目大小和计算机性能。 完成导出后,Unity将生成一个文件夹,其包含所有导出的WebGL文件。我们可以将这个文件夹上传到Web服务器上,然后用户可以通过使用任何兼容的浏览器访问我们的游戏或应用程序。 使用Unity3D导出WebGL格式,我们可以将我们的项目变成一个跨平台的应用程序,用户可以通过使用不同设备上的Web浏览器来访问和播放。这种格式的导出不仅便于使用,而且还可以保留游戏或应用程序的许多功能和性能,使其在Web上的运行效果更加流畅和逼真。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值