我正在尝试使用从多边形路径(SKSpriteNode
对象)创建的SKPhysicsBody
来设置CGPath
对象的PhysicsBody。
我已经通过使用路径创建SKShapeNode
并将其添加为精灵的子项来验证我使用的路径是有效的(请参见屏幕截图)。
但是,当我尝试创建SKPhysicsBody
对象时,BodyWithPolygonFromPath
方法返回NULL
该方法不会抛出异常,只返回NULL。
有什么想法吗?
答案 0 :(得分:2)
虽然Objective-C中存在异常,但它们并不常用(如在.NET中)。绑定可以提供一些额外的检查(例如,针对空参数,避免崩溃),但某些条件不能重复(例如,何时路径被视为无效?)
一般情况下,您会发现Apple提供了以下API:
返回NSError
实例(作为返回值,或者更常见的是,作为out
参数);或
在其输入(或上下文)无效时返回null
(Objective-C中的nil
)。这对于init*
选择器来说非常常见(并且这不是.NET开发人员会想到的,即返回.ctor返回null
);或
在少数情况下,会抛出NSException
。
在某些情况下,您将获得一些日志(请参阅iOS模拟器的Console.app或Xcode的设备组织者),这些日志将为您提供有关出错的线索。通常你不会得到任何东西...... YMMV。
在后一种情况下,您应该尝试回溯您的步骤,例如你的path
是如何创建的?它可能是空的吗?在观察窗口中,它的一些属性看起来很奇怪吗? ...
为我们提供一些复制问题的代码(或者至少看看如何创建`路径)也可能有用。其他人可能在之前遇到过同样的问题......但如果没有其他细节,可能无法告诉/记住。
答案 1 :(得分:1)
我尝试将一些细节输出到Visual Studio调试控制台,突然发现Xamarin / Mono从SKPhysicsBody
对象输出错误消息:
SKPhysicsBody:尝试创建具有18个顶点的多边形时出错, 最大值是12
所以问题是我的多边形太复杂了 我把它简化为12个顶点,它现在可以使用了!