2017-11-08 18 views
2

관련 코드는 아래의 복사 나 또한이 상황을 보여 Github에서에 간단한 테스트 프로젝트를 넣어 :GameViewController에서 SKScene (fileNamed :)을 설정할 수없는 이유는 무엇입니까?

https://github.com/prinomen/viewPresentSceneTest

은 내가 GameViewControllerGameScene 클래스가 있습니다. SKScene(fileNamed: "GameScene")으로 장면을 설정하려고 시도했지만 장면이 나타나지 않고 그 라인 이후의 print 서술문이 호출되지 않기 때문에 호출이 작동하지 않습니다.

let scene = GameScene() 

하지만 SpriteKit을 이해하려고 노력 중이 야 그리고 그것은 아래 코드는 작동하지 않는 날 귀찮게 :

는 나는이 같은 장면을 설정하는 다른 방법을 사용할 수 있습니다 알고 있습니다. 다른 프로젝트에서 아래 코드와 같이 SKScene(fileNamed: "GameScene")을 사용하여 장면을 성공적으로 설정할 수있었습니다.

누구나이 프로젝트에서 작동하지 않는 이유를 알고 있습니까?

GameViewController.swift

import SpriteKit 
class GameViewController: UIViewController { 

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 

    if let view = self.view as! SKView? { 
     // Load the SKScene from 'GameScene.sks' 
     if let scene = SKScene(fileNamed: "GameScene") { 
      print("SKScene was set") 
      // Set the scale mode fit the window: 
      scene.scaleMode = .aspectFill 
      // Size our scene to fit the view exactly: 
      scene.size = view.bounds.size 
      // Show the new scene: 
      view.presentScene(scene) 
     } 
     } 
    } 
    } 

GameScene.swift

import SpriteKit 
class GameScene: SKScene { 

override func didMove(to view: SKView) { 
    self.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
    let logoText = SKLabelNode(fontNamed: "AvenirNext-Heavy") 
    logoText.text = "Game Scene" 
    logoText.position = CGPoint(x: 0, y: 100) 
    logoText.fontSize = 60 
    self.addChild(logoText) 
    } 
} 
+1

canteen의 대답이이 문제를 해결했습니다. 내 프로젝트를 수정하기 위해 새로운 GameScene.sks 파일을 만들었고 Custom Class inspector에서 Custom Class 필드에 GameScene을 입력했습니다. – peacetype

답변

2

난 당신이 그런 장면을로드 할 .sks 파일이 필요합니다 생각합니다. 이 프로젝트에서 삭제했을 수도 있지만 다른 프로젝트에서 계속 유지했습니다.

다음은 documentation의 말씀입니다 :

파일 이름, 파일 확장자없이. 파일은 앱의 기본 번들에 있어야하고 .sks 파일 이름 확장자를 가져야합니다.

+1

SKScene에 대한 설명서에서 이니셜 라이저를 검색했지만 그곳에 표시되지 않습니다 ... 때때로 SKScene이 SKNode에서 상속 받는다는 사실을 잊어 버립니다 :) 나는 거기에 체크 했어야합니다! 당신의 도움을 주셔서 감사합니다! – peacetype