Xamarin.ios SKPhysicsBody.BodyWithPolygonFromPath返回null
我正在尝试使用从多边形路径(一个Xamarin.ios SKPhysicsBody.BodyWithPolygonFromPath返回null,xamarin.ios,xamarin,sprite-kit,Xamarin.ios,Xamarin,Sprite Kit,我正在尝试使用从多边形路径(一个CGPath对象)创建的SKPhysicsBody设置SKSpriteNode对象的PhysicsBody。 我已经通过使用路径创建一个SKShapeNode并将其添加为精灵的子级来验证我使用的路径是否有效(请参见屏幕截图) 但是,当我尝试创建SKPhysicsBody对象时,BodyWithPolygonFromPath方法返回NULL。 该方法不抛出异常,只返回NULL 有什么想法吗 虽然Objective-C中确实存在异常,但它们并不常用(如.NET中)。绑
CGPath
对象)创建的SKPhysicsBody
设置SKSpriteNode
对象的PhysicsBody。我已经通过使用路径创建一个
SKShapeNode
并将其添加为精灵的子级来验证我使用的路径是否有效(请参见屏幕截图)
但是,当我尝试创建SKPhysicsBody
对象时,BodyWithPolygonFromPath
方法返回NULL。该方法不抛出异常,只返回NULL 有什么想法吗
虽然Objective-C中确实存在异常,但它们并不常用(如.NET中)。绑定可以提供一些额外的检查(例如,针对空参数,避免崩溃),但某些条件不能重复(例如,何时会认为路径无效?) 一般来说,您会发现苹果提供了一个API:
- 返回一个
实例(作为返回值或更常见的NSError
参数);或out
- 当其输入(或上下文)无效时,返回
(null
,在Objective-C中)。这在nil
选择器中非常常见(这不是.NET开发人员会想到的,即.ctor返回init*
);或null
- 在少数情况下,会抛出
NSException
路径是如何创建的?它会是空的吗?它的某些属性在手表窗口中看起来奇怪吗
给我们一些代码来复制这个问题也可能很有用(或者至少看看如何创建“路径”)。其他人以前可能遇到过同样的问题。。。但是如果没有其他详细信息,可能无法辨别/记住。我试图将一些详细信息输出到Visual Studio调试控制台,突然注意到Xamarin/Mono从SKPhysicsBody
对象输出了一条错误消息:
SKPhysicsBody:尝试创建具有18个顶点的多边形时出错,
最多12个
所以问题是我的多边形太复杂了。
我已经将它简化为12个顶点,现在可以工作了 谢谢你的意见。我还没有检查Console.app,今天第一次有机会就会检查。这个路径是用一个在线生成器创建的,它在SKShapeNode对象上工作,所以我认为它是一个有效的路径。它可能是特定于上下文的。我见过SpriteKit要求按特定顺序执行某些操作,即重新排序代码以解决问题(和崩溃)。但在走得太远之前,首先要确保它符合苹果公司的文件要求:一条具有逆时针缠绕且无自相交的凸多边形路径。这些点是相对于所属节点的原点指定的。