从 RunAction 的完成处理程序调用 SCNAction 似乎会挂起 SceneKit。
触摸事件或旋转设备似乎可以解除挂起。
重现:
1) 使用旋转飞船启动时使用的默认 SceneKit 项目。
2)替换动画代码:
ship.RunAction(SCNAction.RepeatActionForever(SCNAction.RotateBy(0, 2, 0, 1)));
和:
ship.RunAction(SCNAction.RotateBy(0, 2, 0, durationInSeconds: 3.0f), delegate
{
Console.WriteLine("DONE ROTATE");
ship.RunAction(SCNAction.MoveBy(1, 0, 0, durationInSeconds: 3.0f), delegate
{
Console.WriteLine("DONE MOVEBY");
});
});
3)在模拟器或真机上运行(问题都是一样的)
4) 结果是:
宇宙飞船旋转正常
DONE ROTATE 打印出来 OK
现在挂了
点击屏幕(或将设备旋转到横向),然后移动发生 OK 并打印出 DONE MOVEBY。
我正在使用 C# 和 Visual Studio for Mac,但我怀疑它也使用 Xcode。
这是 SceneKit 中的错误吗?如何解决?
也许这与此处描述的问题相同: