spriteFrame.setRect(或者3.0的rect)不能多次设置吗?

想实现一个类似遮罩效果,一个大图只显示“窗口”内其中一小块,然后大图可以“移动”令窗口的内容变化。

用spriteFrame.setRect发现居然只有第一次使用有效,多次调用则后续无效,完全无法做动画。

当然,如果每帧都clone一个新的spriteframe,再setRect的话是可以的,但那样就产生一大堆spriteframe的内存垃圾了吧。
有没有常规一点的实现方案。
(遮罩当然也能实现,但因为这样的node不少,所以暂时不考虑用遮罩,不然dc挺高的)

有引擎组回答一下吗? :nerd_face:

用mask组件就行, mask作为父节点,子节点就是那个大图, 移动的话,就移动子节点就行

我试了也是没办法,求高手解惑

可以写个遮罩shader,自己传坐标和大小尺寸去控制

不管性能的话我知道遮罩和rect都肯定行,很简单。

坐等高手更优方案~ :nerd_face:

找到合理的方法了,今天有空翻了一下源码
遇事不决,看看源码,永恒的真理 :nerd_face: