그래서 Sprite Kit에서 iOS 게임을 디자인 해오고 있습니다. 최근에 내 캐릭터가 화면의 기울기에 의해 제어되도록 CMMotionManager
을 프로젝트에 추가했습니다. 내가 방법 beginMotionSensing
및 switchToLiveSensing
을 서면으로 작성했습니다, 나는 그런 싱글 톤을 통해 내 CMMotionManager를 사용 가능하게 만드는 방법은 무엇입니까?
self.motionManager = [[CMMotionManager alloc] init];
self.referenceAttitude = nil;
이
을 내 initWithSize
방법 : 그것은 몇 가지 손보는했다 그러나 나는 그것이 작동있어, 여기에 내가 그것을 구현 한 방법입니다. 첫 번째는 휴대 전화가 어떻게 개최되고 두 번째 게임이 게임 자체를 시작하는지에 대한 아이디어를 얻기위한 것입니다. SKActions
을 사용하여, 나는 첫 번째 메소드를 호출하고 잠깐 기다렸다가 두 번째 메소드를 호출한다. 그들은이 같은 모양 :
-(void)beginMotionSensing{
CMDeviceMotion *deviceMotion = self.motionManager.deviceMotion;
CMAttitude *attitude = deviceMotion.attitude;
self.referenceAttitude = attitude;
[self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
[self setNull:motion];
}];
self.motionManager.deviceMotionUpdateInterval = .3;
}
하고,
-(void)switchToLiveSensing{
gameIsLive = YES;
[self.motionManager stopDeviceMotionUpdates];
[self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
[self captureRoll:motion];
}];
self.motionManager.deviceMotionUpdateInterval = .02;
}
그래서 내가 한 번 이상 게임이 더 재생할 수있는 기능을 추가 할 때까지,이 모든 설정하고 큰 일하고 있었다. 이 전에는 앱을 종료하고 게임을 종료 할 때 게임을 종료해야했습니다. 분명히 이것은 귀찮았습니다. 그래서 다시 돌아가서 게임 장면을 재생할 수있는 능력을 가진 "게임 오버"장면을 추가했습니다. 게임 장면은 다음과 같이 다시 제시 : 나는
싱글에 대해 이전 게시물에 사람이 말하는 것을 기억했다
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
SKTransition *transition = [SKTransition fadeWithColor:[UIColor colorWithRed:147.0/255.0 green:213.0/255.0 blue:216.0/255.0 alpha:1.0] duration:2.0f];
MyScene *gameScene = [MyScene alloc];
gameScene = [gameScene initWithSize:self.frame.size passedInFuel:100];
[self.view presentScene:gameScene transition:transition];
}
- 주석이 CMMotionManager
를 구현하는 사람에 지시했다. 그들은 "아마도 클래스를 두 번 이상 초기화하려고한다면 싱글 톤을 통해 접근 가능하도록 만들어야 할 것입니다." 음, 물론, 그게 내가 지금하고있는 일이야. 나는 게임을 할 때까지 이것을 잊어 버렸고 전화가 갑자기 내 기울임을 무시하는 것처럼 보였고 그 과정에서 내 성격을 죽이는 자신의 사업과 함께 갔다. 그 이후로는 발생하지 않았지만 분명히 고쳐야 할 부분입니다.
이 소위 "싱글 톤"을 구현하는 데 도움을 줄 수 있습니까? 당신의 SKScene이 사라질 때 CMMotionManager
객체가 어쨌든 해제해야으로
내가 올바르게 당신을 이해한다면, 나는 이것에 대해 걱정할 필요가 없다고 말하고 있습니까? 애플은 어떤 이유로 프로젝트 당 한 번만 CMMotionManager를 생성 할 것을 권장합니까? 나는 게임을 다시 시작하려고 시도했지만 같은 문제를 반복하지 못했습니다. – Todd
저는 ** 부하를 짐작하고 있습니다. 실시간 데이터가 비싸고, 각 관리자 인스턴스에 대한 생성 시간과 종료 시간이 될 수도 있습니다. – Craig
나는 오늘 게임을 다시 시험하고 있었고 같은 결점이 발생했다. 게임 도중 (무작정) 게임 중에 무작위로 발생하는 것처럼 보입니다. 기본적으로 자이로가 내 말을 듣지 않고 다른 누군가가 무작위로 움직이는 것처럼 보입니다. 섬뜩하다.귀하의 코드를 구현했지만 오류가 발생했습니다. – Todd