离屏绘制用RenderTexture的处理方法
最終更新: 2025年10月14日
此页面包含有关Beta版的描述。
Cubism 5 SDK for Unity R5 beta2和Cubism 5 SDK for Web R5 beta2及更高版本采用了一种结构,通过重复使用离屏绘制所使用的RenderTexture(RenderTarget)来减少内存记忆压力。
离屏绘制流程
Cubism SDK for Unity和Cubism SDK for Web中的离屏绘制流程如下:


RenderTexture的重复使用结构

关于RenderTexture可重复使用的模型结构模式
RenderTexture可重复使用的模型结构/RenderTexture不可重复使用的模型结构
父级离屏绘制的RenderTexture会持续持有RenderTexture,直到子级层级中所有绘制物件(Drawable和离屏绘制)绘制完成。
因此,如果离屏绘制处于父子层次结构中,则父子层次结构中的每个离屏绘制最多会分配一个RenderTexture。
例如,具有以下结构的模型将最多分配三个RenderTexture。

如果同一层次结构中有多个离屏绘制,则该层次结构中只会使用一个RenderTexture。
例如,如下结构的模型有4个离屏绘制,但是由于没有父子层次结构的离屏绘制,所以只生成并使用一个RenderTexture。

对于具有以下组合结构的模型,父子层次结构中的离屏绘制的最大数量为三个(PartA~PartD),因此生成的RenderTexture数量和使用的RenderTexture的最大数量将为三个。

释放前一帧中未使用的RenderTexture
在Unity中,如果您只想从已经创建的RenderTexture中释放不再需要的RenderTexture,您可以通过调用释放前一帧中未使用的RenderTexture的函数CubismOffscreenRenderTextureManager.ReleaseStaleRenderTextures()来实现。
CubismOffscreenRenderTextureManager.GetInstance().ReleaseStaleRenderTextures();
切换场景时释放(Unity)
SceneManager.sceneLoaded += OnSceneLoaded();
~~~
private void OnSceneLoaded()
{
CubismOffscreenRenderTextureManager.GetInstance().ReleaseStaleRenderTextures();
}
请问这篇文章对您有帮助吗?
是否