我有一个奇怪的情况,下面的脚本将成功加载并以统一的方式播放电影纹理:
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;
}
}
}
但是如果我download sample.ogg并将其放在我的资源文件夹中并更改行:
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
?
答案 0 :(得分:0)
需要将影片文件放入名为StreamingAssets的文件夹(Assets中的任何位置)。而不是使用Application.dataPath,请使用Application.streamingAssetsPath。
https://docs.unity3d.com/Manual/StreamingAssets.html
这将确保无论您的目标平台如何,找到电影的路径都是正确的。