SKSceneNode 한 클래스를 SKScene의 하위 클래스 인 MainMenu
클래스에 추가하려고합니다. 이러한 메서드를 정의한 DumpTruckFramework
클래스는 SKSpriteNode의 하위 클래스입니다 (문제 일 수 있음). 위메서드에서 다른 클래스에 SKSpriteNode를 추가하는 방법은 무엇입니까?
#DumpTruckFramework.h
#import <SpriteKit/SpriteKit.h>
@interface DumpTruckFramework : SKSpriteNode
-(void)createDumpTruckMainBody;
@end
#DumpTruckFramework.m
#import "DumpTruckFramework.h"
@implementation DumpTruckFramework
-(SKNode*)setupDumpTruckMainBody{
SKSpriteNode *mainBody = [SKSpriteNode spriteNodeWithImageNamed:@"Dump_Truck_Main_Body.png"];
mainBody.name = @"";
mainBody.scale = 0.5;
mainBody.position = CGPointMake(300, 400);
return mainBody;
}
-(void)createDumpTruckMainBody{
SKNode *mainBody = [self setupDumpTruckMainBody];
[self addChild:mainBody];
}
@end
나는 mainBody
스프라이트를 추가 MainMenu
클래스에서 사용하는 방법 : 아래는 내가 사용하고있는 모든 코드입니다. 어쩌면 자기가 DumpTruckFramework
클래스를 참조하는 것처럼 코드 라인이 [self addChild:mainBody];
일 수 있습니까?
#MainMenu.h
#import <SpriteKit/SpriteKit.h>
@interface MainMenu : SKScene
@end
#MainMenu.m
#import "MainMenu.h"
#import "DumpTruckFramework.h"
@implementation MainMenu
-(id)initWithSize:(CGSize)size{
if (self = [super initWithSize:size]){
//[self createMainMenuTitle];
DumpTruckFramework *dumpTruck = [[DumpTruckFramework alloc] init];
[dumpTruck createDumpTruckMainBody];
}
return self;
}
내가 생각하는 것은이 방법이 효과가 있지만 예상되는 것을하지 않는다는 것입니다. MainMenu
장면은 노드를 표시하기위한 것이므로 "보기 가능 장면"으로 선언됩니다.
누군가가이 문제를 해결할 수 있기를 바랍니다. 무슨 일
위대한 작품! 내 이해에서 여기서 뭘하는지 궁금한 점은'createDumpTruckMainBody' 반환 값 이름을 node로 대체 한 다음 장면에 추가하는 것입니다. 내가 틀렸다면 나에게 맞춰주세요. 제가 왜 무언가를해야하는지에 대한 좋은 견해를 얻고 싶습니다. @ 그렉 – Mutch95
예, 맞습니다. 저는 그냥 createDumpTruckMainBody에서 SKNode를 반환하고 MainMenu의 장면에 추가합니다. MainMenu는 SKScene의 하위 클래스이므로 addChild를 호출 할 때 노드를 장면에 추가합니다. 귀하의 코드에서 볼 수없는 노드를 장면에 추가하지 않는 SKSpriteNode 하위 클래스의 addChild :를 호출합니다. – Greg