당신은 엑스 코드에서 새로운 게임 템플릿 프로젝트, 게임 장면의 인스턴스를 다음 초기화를 사용하는 기본 GameViewController
한 경우 :만들기 SKScene, 초기화 (fileNamed : 초기화 대 (크기 :
let scene = SKScene(fileNamed: "GameScene")
을 템플릿 파일에서 이니셜 라이저를 사용하면 Apple에서 권장하는 방법 인 SKScene
을 만드는 것이 좋습니다. 그러나 나는 init(size:)
이니셜 라이저 또는 단순히 SKScene()
을 사용하는 스택 오버플로에 대한 많은 예제를 보았습니다.
SKScene
의 인스턴스를 만드는 가장 좋은 방법은 무엇이며 각 방법의 장단점은 무엇인지, 그리고 한 접근법과 다른 접근법을 사용할 때주의해야 할 함정이 무엇인지 궁금합니다.
내가 묻는 이유는 내 게임의 장면을 만들고 수준 1을 만들기 위해 init(fileNamed:)
을 사용했다는 것입니다. 나중에 레벨 2에 대한 장면의 다른 인스턴스를 만들려고하면 init(size:)
을 사용하여 문제가 발생했습니다. 즉, 을 사용하는 일부 위치 계산과 init(fileNamed:)
대신 init(size:)
을 사용하여 장면을 만들면 장면의 프레임이 다른 결과를 생성하는 것처럼 보입니다.
좀 더 일반적인 의미에서 iOS와 SpriteKit을 사용하여 새로운 접근 방식을 사용하여 새로운 SKScene
및 장점 &을 초기화하는 것에 대해 익숙한 사람의 의견을 듣고 싶습니다.
완전한 대답이 없지만 fileNamed 오버로드를 사용 했으므로 괜찮 았지만 쉽게 탐색 할 수 있도록 장면을 캐시했습니다. – Yitzchak
문제의 일부는 init (size :)가 다른 기본값으로 초기화하는 것일 수 있습니다. init (fileNamed :)을 사용하여 파일에서로드하는 장면에 비해 기대할 수 있습니다. 예를 들어, 장면 크기는 전달한 내용에 따라 달라집니다. 장면의 이름은 달라집니다. 그것은 SKScene의 다른 하위 클래스 일 수 있습니다. anchorPoint가 같은 위치에 있지 않을 수도 있습니다. 등. –