也许这很有意义,但我注意到如果你有一个SKEffectNode作为SKCropNode的子节点,那么如果所说的SKEffectNode将其过滤器设置为某个东西,则裁剪根本不起作用。
具体来说,我在SKEffectNode上使用了一个模糊CIFilter。我在游戏中制作了一个切换按钮,因此我可以打开/关闭模糊效果,而且很明显SKCropNode可以裁剪模糊的东西。我想知道这是否也适用于大多数/所有其他CIFilter。
顺便说一下,我打开模糊的方式是这样的:
SKEffectNode* nodetoblur = [self thenodetoblur];
CIFilter *blur = [CIFilter filterWithName:@"CIGaussianBlur" keysAndValues:@"inputRadius", @10.0f, nil];
nodetoblur.filter = blur;
nodetoblur.shouldEnableEffects = YES;
关闭:
SKEffectNode* nodetoblur = [self thenodetoblur];
nodetoblur.filter = nil;
nodetoblur.shouldRasterize = NO;
nodetoblur.shouldEnableEffects = NO;
任何人都可以解释SKCropNode效率低下的理论,可能还有解决方法吗?
...也许我应该制作SKEffectNode的SKCropNode子节点,而不是(当前的)其他方式。
更新:罪魁祸首似乎是在shouldEnableEffects
设置为YES的情况下创建了SKEffectNode。它必须设置为NO,否则SKCropNode无法裁剪SKEffectNode。