前言
之前使用的是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,就行了,在播放界面关闭是释放缓存,如果在同一个界面切换播放下一个视屏,没必要释放,卡的那一下,脚本看不出来
总结
在其他地方没看到最后解决卡视屏的方法,就写一个来记录一下思路.练习一下写作水平