Unity填坑之Video与RenderTexure
前言
需要在游戏里面增加视频,或者CG动画,需要使用到Unity自带的Video组件,同时由于要结合UI和其他图片进行组合展示,所以要用到RenderTexure,将视频流放入到一个Texture里面,再用RawImage指定这个RenderTexture。只播放一次时,没问题,但是当切换页面或者销毁预制之后,再播放时,会残留一部分视频在上一次播放停止的地方。
一、修复方式
修复方式就是每次打开预制,或者界面的时候,动态创建一个新的RenderTexture,然后设置Video的Target Texture为这个新的RenderTexture,设置RawImage的texture也为这个新的RenderTexture。示例代码如下(碰到问题的项目是LUA项目):
self._Player = self.viewModel.node_video.gameObject:GetComponent(typeof(UnityEngine.Video.VideoPlayer))
self._Player.targetTexture = UnityEngine.RenderTexture(ResLoad.get("Video/MyRenderTexture"):asset(typeof(UnityEngine.RenderTexture)))
self.rawImage = self.viewModel.node_rawImage.gameObject:GetComponent("RawImage")
self.rawImage.texture = self._Player.targetTexture
需要注意的是,为了自己设置的RenderTexture配置不变,可以在New RenderTexture时,传入之前设置好的,这样就能copy设置,不要代码设置了,即在UnityEngine.RenderTexture(//这里传入之前做好的RenderTexture)