필자는 Sprite Kit 기반 게임에 몇 가지 기술을 통합하여 테스트하고 있으며, 나는 간단한 작업이라는 것을 알아 채고 있습니다.현재 SKScene의 속성에 액세스합니까?
내가 사용중인 테스트 프로젝트는 Spine을 스프라이트 키트와 통합 한 프레임 워크의 일부로 제공되었습니다. 모든 것은 하나의 ViewController에 포함되고 정의됩니다.이 뷰는 현재 어떤 옵션이 UISegmentedControl
에 선택되어 있는지에 따라 네 가지보기 중 하나를 만듭니다. 화면 하단에서 나는 작업에 매여있는 UISwitch
있습니다
-(IBAction)changeCostume:(UISwitch *)sender {
if(sender.on) {
NSLog(@"New costume");
} else {
NSLog(@"Old costume");
}
}
내가 일하고 있어요 장면은 다음과 같이 정의된다 :
+ (SKScene *) buildAvatarWithSize:(CGSize) size
{
SpineSkeleton *avatar = [DZSpineSceneBuilder loadSkeletonName:@"test-avatar" scale:1]; //json
spSkeleton_setSkinByName(avatar.spineContext->skeleton, "test-avatar");
spSkeleton_setSlotsToSetupPose(avatar.spineContext->skeleton);
DZSpineSceneDescription *sceneDesc = [DZSpineSceneDescription description];
... define animations etc. here...
NSArray *nodes = [sceneDesc buildScene];
SKNode *placeHolder = [SKNode node];
placeHolder.position = CGPointMake(100, size.height);
placeHolder.name = @"root";
... more setup code...
SKScene *scene = [[SKScene alloc] initWithSize:size];
scene.scaleMode = SKSceneScaleModeAspectFill;
scene.backgroundColor = [UIColor whiteColor];
[scene addChild:placeHolder];
return scene;
}
내가 액세스하려는 속성 sceneDesc
입니다 - UISwitch
을 누르면 즉시 내용을 수정해야합니다. 장면 설정 코드 내에서 가능하다는 것을 알고 있지만 장면이 화면에 나타나면이를 수행하는 방법을 파악하는 데 문제가 있습니다.
이 속성 값을 변경하면 다양한 노드에서 사용되는 SKTexture
이 변경됩니다.
아마도 내가 Objective-C에 대해 아직 익숙하지 않다는 것과 프로젝트의 설정이 내가 지금까지 어떻게 작업했는지와 다르다는 것을 알 수 있습니다. (장면을 자신의 클래스와 속성 프로그래밍 방식으로 쉽게 액세스 할 수 있음).