【问题标题】:MovieTexture Never Plays In BuildMovieTexture 在构建中从不播放
【发布时间】:2014-09-02 20:41:41
【问题描述】:

我已经编写了一个脚本来将 OGG 文件作为 MovieTexture 播放,我已经尝试过嵌入的资产文件以及来自网络的文件。我遇到的问题是视频在调试移动中播放(当我点击播放按钮并在“游戏”选项卡中进行测试时)但是当我构建到可执行文件时它们永远不会工作..

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;
            }
        }
    }
}

谁能解释一下这种行为?

谢谢

【问题讨论】:

    标签: unity3d


    【解决方案1】:

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

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

    现在变成了

    renderer.material.mainTexture = movieTexture;
    

    【讨论】:

      猜你喜欢
      • 2015-06-29
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多