我有一个关于Unity3D的movieTexture对象的问题。
在我目前的游戏中,我有一个3D房间,玩家坐在里面,在他/她面前有一个电脑屏幕。我在这个屏幕上有一部自动播放电影的电影。
此影片是指向应用程序的####_data文件夹的链接。它寻找任何叫做"movie.ogv“的东西
我用了一段4分钟的长视频。它的工作原理是完美的。
于是,我把一集很受欢迎的电视节目改成了OGG Theora,"ogv",并把它放在同一个名字下。现在,当游戏开始的时候,所有的东西都是黑色的。我必须打开任务管理器,以确保我的游戏被冻结。
to...somehow是否处理这些较大的文件,并需要在黑色屏幕上冻结一段时间?还是说它不像长视频?
其意图是允许用户将他们想要的任何电影文件放入游戏中观看。这个目的是失败的,如果团结怪物的时候,只有22分钟,大约150 22的东西放在里面。请帮帮忙?有什么想法吗?
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class VideoScript : MonoBehaviour
{
MovieTexture movieTexture;
private bool isPaused;
void Start () {
isPaused = false;
//WWW www = new WWW ("http://www.unity3d.com/webplayers/Movie/sample.ogg");
WWW www = new WWW ("file:///"+(Application.dataPath)+"/movie.ogv");
movieTexture = (MovieTexture) www.movie;
renderer.material.mainTexture = movieTexture;
audio.clip = movieTexture.audioClip;
}
void Update () {
if (movieTexture.isReadyToPlay && !movieTexture.isPlaying && !isPaused)
{
movieTexture.Play();
audio.Play();
}
if (Input.GetKeyDown ("space"))
{
if (movieTexture.isPlaying)
{
movieTexture.Pause();
isPaused=true;
}
else
{
movieTexture.Play();
isPaused=false;
}
}
}
}发布于 2014-01-17 07:17:52
编辑
您在开始脚本中缺少了一个关键字行。
// Wait for download to complete
yield www;加载更大文件的内容需要一段时间,因此您的脚本将获得一个空的电影纹理。
下面是完整的开始脚本,应该是:
void Start ()
{
isPaused = false;
// This variable is defined outside of the Start function.
www = new WWW ("file:///"+(Application.dataPath)+"/movie.ogv");
// Wait for download to complete
yield www;
movieTexture = (MovieTexture) www.movie;
renderer.material.mainTexture = movieTexture;
audio.clip = movieTexture.audioClip;
}请看一下这里,了解它是如何工作的。简而言之,yield指示脚本在该行处等待,直到www对象准备就绪。
原始答案
仅仅在文件夹中放置一个适当格式的文件是不够的。电影是一种资源,因此需要像对待其他资源一样对待它。
您需要使用Resources.Load(....)加载广告,然后将结果的MovieTexture分配给所讨论的对象。
如果您能更多地分享有关这些电影的加载过程的内容,这将有所帮助。
https://stackoverflow.com/questions/21066881
复制相似问题