在Unity中加载和播放电影作为纹理

本文关键字:放电影 纹理 播放 Unity 加载 | 更新日期: 2023-09-27 18:17:13

我有一个奇怪的情况,下面的脚本将成功加载和播放统一的电影纹理:

using UnityEngine;
using System.Collections;
public class Tester : MonoBehaviour {
    MovieTexture _tex;
    Renderer _rend;
    bool _initTex = false;
    // Use this for initialization
    void Start () {
        _rend = GetComponent(typeof(Renderer)) as Renderer;
    }
    // Update is called once per frame
    void Update () {
        if (!_initTex) {
            initTex();
        } else {
            if (!_tex.isReadyToPlay) {
                Debug.Log("Waiting for _tex");
            } else if (!_tex.isPlaying) {
                _rend.material.mainTexture = _tex;
                _tex.Play();
            }
        }
    }
    void initTex() {
        WWW req = new WWW("http://www.unity3d.com/webplayers/Movie/sample.ogg");
        if (req.error != null) {
            Debug.Log("Error: " + req.error);
        } else {
            Debug.Log("Got movie = " + (req.movie != null).ToString());
            _tex = req.movie;
            _initTex = true;
        }
    }
}

然而,如果我下载样本。然后把它放到我的assets文件夹中,修改行:

WWW req = new WWW("http://www.unity3d.com/webplayers/Movie/sample.ogg");

:

string path = Application.dataPath + "/Videos/sample.ogg";
WWW req = new WWW(path);

我得到一个无休止的Waiting for _tex消息(见上文)。MovieTexture正在成功加载,但_tex.isReadyToPlay从未为真。

这是怎么回事?

当电影文件播放时,加载和播放之间通常会有很长的延迟。是否有一种更有效的方式来加载和准备一个电影到MovieTexture ?

在Unity中加载和播放电影作为纹理

影片文件需要放置到一个名为StreamingAssets的文件夹中(在Assets中的任何位置)。而不是使用Application。

https://docs.unity3d.com/Manual/StreamingAssets.html

这将确保无论您的目标平台如何,路径都是正确的。