首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity3D:最大大小的电影解说www文件?

Unity3D:最大大小的电影解说www文件?
EN

Stack Overflow用户
提问于 2014-01-11 19:33:16
回答 1查看 2.8K关注 0票数 1

我有一个关于Unity3D的movieTexture对象的问题。

在我目前的游戏中,我有一个3D房间,玩家坐在里面,在他/她面前有一个电脑屏幕。我在这个屏幕上有一部自动播放电影的电影。

此影片是指向应用程序的####_data文件夹的链接。它寻找任何叫做"movie.ogv“的东西

我用了一段4分钟的长视频。它的工作原理是完美的

于是,我把一集很受欢迎的电视节目改成了OGG Theora,"ogv",并把它放在同一个名字下。现在,当游戏开始的时候,所有的东西都是黑色的。我必须打开任务管理器,以确保我的游戏被冻结。

to...somehow是否处理这些较大的文件,并需要在黑色屏幕上冻结一段时间?还是说它不像长视频?

其意图是允许用户将他们想要的任何电影文件放入游戏中观看。这个目的是失败的,如果团结怪物的时候,只有22分钟,大约150 22的东西放在里面。请帮帮忙?有什么想法吗?

代码语言:javascript
复制
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;
            }
        }


    }   

}
EN

回答 1

Stack Overflow用户

发布于 2014-01-17 07:17:52

编辑

您在开始脚本中缺少了一个关键字行。

代码语言:javascript
复制
// Wait for download to complete
yield www;

加载更大文件的内容需要一段时间,因此您的脚本将获得一个空的电影纹理。

下面是完整的开始脚本,应该是:

代码语言:javascript
复制
    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分配给所讨论的对象。

如果您能更多地分享有关这些电影的加载过程的内容,这将有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21066881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档