Unity Ugui VideoPlayer播放视屏

前言

之前使用的是Ngui,现在转用ugui,需要使用都ugui播放视屏,偷个懒使用的ugui官方提供的播放视屏组件VideoPlayer,但他在pc端播放完视屏后,下次打开会有一瞬间会卡播放上次播放的的视屏片段.最后觉得可能是VideoPlayer组件的缓存问题.


一、VideoPlayer使用

1.ugui提供的播放视屏组件感觉不是很友善.

2.先创建一个 RenderTexture 播放视屏的分辨率那些都是由他设置的.(命名VideoTexture)

3.接着在Ui中创建一个RawImage,把第一步创建的RenderTexture设置为RawImage的Texture.

4.最后创建一个Video Player,他有两种播放视屏的方式,这个不说了,同时把第一步创建的RenderTexture设置RenderTexture的Target texture.设置好视屏就可以播放了,但他会有卡上个视屏的bug.

5.最后的ui层级界面.

二、解决卡视屏bug

1.创建一个UiVideoPanel脚本

using UnityEngine;
using UnityEngine.Video;

public class UiVideoPanel : MonoBehaviour
{
    private RenderTexture renderTexture;
    // Start is called before the first frame update
    void Start()
    {
        //获取播放视屏的VideoPlayer组件,通过VideoPlayer获取使用的RenderTexture
        //在视屏播放完成后,重置RenderTexture,来消除上次播放的缓存
        renderTexture = gameObject.GetComponent<VideoPlayer>().targetTexture;
    }
    private void OnEnable()
    {
       
    }
    // Update is called once per frame
    void Update()
    {
        
    }
    private void OnDisable()
    {
        //释放缓存
        renderTexture.Release();
    }
    private void OnDestroy()
    {
        //在界面销毁时释放RenderTexture 组件内存
        renderTexture = null;
    }
}

把他挂载在Video Player,就行了,在播放界面关闭是释放缓存,如果在同一个界面切换播放下一个视屏,没必要释放,卡的那一下,脚本看不出来


总结

在其他地方没看到最后解决卡视屏的方法,就写一个来记录一下思路.练习一下写作水平

猜你喜欢

转载自blog.csdn.net/weixin_42129718/article/details/109305593
今日推荐