在Apple关于与C API交互的文档中,他们描述了NS_ENUM以Swift枚举方式导入标记的C风格枚举的方式.这是有道理的,因为Swift中的枚举很容易作为enum值类型提供,所以很容易看到如何创建自己的.
更进一步,它说这是关于NS_OPTIONS标记的C风格选项:
Swift还导入标有
NS_OPTIONS宏的选项.而选项的行为类似于进口枚举,选项还可以支持一些位操作,如&,|和~.在Objective-C中,表示使用常量零(0)设置的空选项.在Swift中,用于nil表示没有任何选项.
鉴于optionsSwift中没有值类型,我们如何创建一个C-Style选项变量来使用?

你好.
我有一个多重碰撞问题.有一颗子弹击中敌人(红色矩形).然后,它得分.有一个螺旋(红色圆圈),当敌人(红色矩形)接触时,它会触发场景结束.
在这种情况下,当敌人击中螺旋,它工作,场景结束,我们进入菜单屏幕.但是,当子弹击中敌人时,同样的事情发生了,我不知道为什么.
现在,这是我的代码:
struct PhysicsCategory {
static let None : UInt32 = 0
static let All : UInt32 = UInt32.max
static let enemyOne : UInt32 = 0b1
static let enemyTwo : UInt32 = 0b1
static let bullet : UInt32 = 0b10
static let spiral : UInt32 = 0b111
}
spiral.physicsBody = SKPhysicsBody(rectangleOfSize: spiral.size)
spiral.physicsBody?.categoryBitMask = PhysicsCategory.spiral
spiral.physicsBody?.contactTestBitMask = PhysicsCategory.enemyOne
spiral.physicsBody?.collisionBitMask = PhysicsCategory.None
...
enemyOne.physicsBody = SKPhysicsBody(rectangleOfSize: enemyOne.size)
enemyOne.physicsBody?.dynamic = true
enemyOne.physicsBody?.categoryBitMask = PhysicsCategory.enemyOne
enemyOne.physicsBody?.contactTestBitMask = PhysicsCategory.bullet | PhysicsCategory.spiral
enemyOne.physicsBody?.collisionBitMask …Run Code Online (Sandbox Code Playgroud)