SKPhysicsBody.BodyWithPolygonFromPath返回null

时间:2014-02-24 21:43:40

标签: xamarin.ios xamarin sprite-kit

我正在尝试使用从多边形路径(SKSpriteNode对象)创建的SKPhysicsBody来设置CGPath对象的PhysicsBody。 我已经通过使用路径创建SKShapeNode并将其添加为精灵的子项来验证我使用的路径是有效的(请参见屏幕截图)。

但是,当我尝试创建SKPhysicsBody对象时,BodyWithPolygonFromPath方法返回NULL 该方法不会抛出异常,只返回NULL。

有什么想法吗?

enter image description here

2 个答案:

答案 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个顶点,它现在可以使用了!