MovieTexture永远不会在构建中播放

时间:2014-09-02 09:05:42

标签: unity3d

我编写了一个脚本来播放OGG文件作为MovieTexture,我已经尝试了嵌入式资产文件以及网络。我遇到的问题是视频在调试移动中播放(当我点击播放按钮并在&#34;游戏&#34;标签中测试)但是当我构建可执行文件时它们永远不会工作.. < / p>

using UnityEngine;

namespace Assets.Scripts
{
    [RequireComponent(typeof(AudioSource))]
    public class VideoScreen : MonoBehaviour
    {
        public string videoUrl;
        public bool autoPlay = true;
        public bool loop = true;
        public bool playAudio = true;
        public float opacity = 1.0f;

        private bool hasLoaded;
        private MovieTexture movieTexture;

        public void Start ()
        {
            if (string.IsNullOrEmpty(videoUrl))
            {
                return;
            }

            var data = new WWW(videoUrl);
            movieTexture = data.movie as MovieTexture;
        }

        public void Update()
        {
            if (movieTexture.isReadyToPlay && !hasLoaded)
            {
                renderer.material = new Material(Shader.Find("Custom/Unlit Transparent Color")) { mainTexture = movieTexture };
                audio.clip = movieTexture.audioClip;

                SetLoop(loop);

                if (autoPlay)
                {
                    Play();
                }

                hasLoaded = true;
            }

            var textureColor = renderer.material.color;
            textureColor.a = opacity;
            renderer.material.color = textureColor;
        }

        private void Play()
        {
            movieTexture.Stop();
            movieTexture.Play();

            if (playAudio)
            {
                audio.Stop();
                audio.Play();
            }
        }

        private void Pause()
        {
            movieTexture.Pause();
            if (playAudio)
            {
                audio.Pause();
            }
        }

        private void Stop()
        {
            movieTexture.Stop();
            if (playAudio)
            {
                audio.Stop();
            }
        }

        private void SetLoop(bool loopStatus)
        {
            movieTexture.loop = loopStatus;
            if (playAudio)
            {
                audio.loop = loopStatus;
            }
        }
    }
}

任何人都可以对这种行为有所了解吗?

由于

1 个答案:

答案 0 :(得分:0)

原来我使用的自定义透明漫反射着色器导致了问题! DOH !!

renderer.material = new Material(Shader.Find("Custom/Unlit Transparent Color")) { mainTexture = movieTexture };

现在变成

renderer.material.mainTexture = movieTexture;