DidBeginContact 在另一个 class

DidBeginContact in another class

我想在另一个 class 中处理我所有的联系人。我真的不知道该怎么做,所以我是这样做的:

HandleContact 是 SKNode

的子 class
-(void)didBeginContact:(SKPhysicsContact *)contact {

    HandleContact *handleContact = [[HandleContact alloc]
    initWithBodyA:contact.bodyA.node bodyB:contact.bodyB.node
    scene:self];
}

一切正常,但我收到此错误:

Unused variable 'HandleContact'

那么我应该怎样做才正确呢? (也许我应该使用另一种类型?)

您当前的代码存在内存泄漏。每次注册联系人时,您都会实例化一个 HandleContact class。如果你想要一个 class 来处理你的联系人,我建议你在代码的开头实例化它并保留对它的引用。像 (void)didMoveToView:(SKView *)view

这样的地方

您需要问自己的问题是,为什么您需要 class 来处理您的联系人?如果您希望组织代码,可以从 didBeginContact 中调用不同的方法。

-(void)didBeginContact:(SKPhysicsContact *)contact {
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);

    if (collision == (CategoryAlpha | CategoryBeta))
        [self myMethod1];
}