Unity3D:从 MovieTexture 迁移到 VideoPlayer

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

从 MovieTexture 迁移到 VideoPlayer

如果您的某些项目使用旧版 MovieTexture 组件下载和播放电影,则可以更新它们以使用较新的 VideoPlayer 组件。

为了帮助您从 MovieTexture 迁移到 VideoPlayer,此页面提供了有关如何使用每个组件下载和播放电影的示例。

播放电影

MovieTexture

using UnityEngine;

public class PlayMovieMT : MonoBehaviour
{
    public AudioClip movieAudioClip;
    public MovieTexture movieTexture;

    void Start()
    {
        var audioSource = gameObject.AddComponent<AudioSource>();
        audioSource.clip = movieAudioClip;
    }

    void Update()
    {
        if (Input.GetButtonDown("Jump"))
        {
            var audioSource = GetComponent<AudioSource>();
            GetComponent<Renderer>().material.mainTexture = movieTexture;

            if (movieTexture.isPlaying)
            {
                movieTexture.Pause();
                audioSource.Pause();
            }
            else
            {
                movieTexture.Play();
                audioSource.Play();
            }
        }
    }
}

VideoPlayer

using UnityEngine;

public class PlayMovieVP : MonoBehaviour
{
    public UnityEngine.Video.VideoClip videoClip;

    void Start()
    {
        var videoPlayer = gameObject.AddComponent<UnityEngine.Video.VideoPlayer>();
        var audioSource = gameObject.AddComponent<AudioSource>();

        videoPlayer.playOnAwake = false;
        videoPlayer.clip = videoClip;
        videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.MaterialOverride;
        videoPlayer.targetMaterialRenderer = GetComponent<Renderer>();
        videoPlayer.targetMaterialProperty = "_MainTex";
        videoPlayer.audioOutputMode = UnityEngine.Video.VideoAudioOutputMode.AudioSource;
        videoPlayer.SetTargetAudioSource(0, audioSource);
    }

    void Update()
    {
        if (Input.GetButtonDown("Jump"))
        {
            var vp = GetComponent<UnityEngine.Video.VideoPlayer>();

            if (vp.isPlaying)
            {
                vp.Pause();
            }
            else
            {
                vp.Play();
            }
        }
    }
}

下载电影

MovieTexture

using UnityEngine;

public class DownloadMovieMT : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(GetMovieTexture());
    }

    IEnumerator GetMovieTexture()
    {
        using (var uwr = UnityWebRequestMultimedia.GetMovieTexture("https://myserver.com/mymovie.ogv"))
        {
            yield return uwr.SendWebRequest();
            if (uwr.isNetworkError || uwr.isHttpError)
            {
                Debug.LogError(uwr.error);
                yield break;
            }

            MovieTexture movie = DownloadHandlerMovieTexture.GetContent(uwr);

            GetComponent<Renderer>().material.mainTexture = movie;
            movie.loop = true;
            movie.Play();
        }
    }
}

VideoPlayer

using UnityEngine;

public class DownloadMovieVP : MonoBehaviour
{
    void Start()
    {
        var vp = gameObject.AddComponent<UnityEngine.Video.VideoPlayer>();
        vp.url = "https://myserver.com/mymovie.mp4";

        vp.isLooping = true;
        vp.renderMode = UnityEngine.Video.VideoRenderMode.MaterialOverride;
        vp.targetMaterialRenderer = GetComponent<Renderer>();
        vp.targetMaterialProperty = "_MainTex";

        vp.Play();
    }
}

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:视频播放器 (Video Player) 组件 (mvrlink.com)

下一篇:Unity3D:视频剪辑 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号