Tệp .sks
là bản lưu trữ tĩnh của nội dung cảnh của bạn. Nếu bạn đã sử dụng Trình tạo giao diện để thiết lập các ứng dụng giao diện người dùng trước đây, thì đó cũng là ý tưởng tương tự, nếu thực sự khác nhau trong triển khai.
Trong một ứng dụng giao diện người dùng, bạn có thể làm tất cả mọi thứ trong mã:
override func viewDidLoad() {
let someText = UITextField(...)
let aButton = UIButton(...)
// ... position everything
// ... style everything
// ... etc ...
}
Hoặc bạn có thể làm tất cả những thiết lập nội dung tĩnh trong IB (một xib hoặc storyboard), và sử dụng mã chỉ để thiết lập năng động hành vi ứng dụng của bạn - những điều xảy ra khi ai đó bắt đầu chạm vào các nút đó. Khi bạn làm điều đó, bộ điều khiển xem bạn viết mã để tồn tại như một đối tượng proxy trong xib/storyboard, tạo một cầu nối giữa những gì bạn thiết lập trong IB và những gì bạn thiết lập trong mã.
Trong SpriteKit, bạn có cùng lựa chọn. Trước khi Xcode 6, nhiều trò chơi SK mất cách tiếp cận tất cả các mã:
override func didMoveToView(view: SKView) {
let player = PlumberSprite(color: .Red)
player.position = // ...
player.physicsBody = // ...
self.addChild(player)
let ground = SKSpriteNode(...)
ground.position = // ...
ground.physicsBody = // ...
self.addChild(ground)
let block = QuestionBlockSprite()
block.position = // ...
block.physicsBody = // ...
block.contents = CoinSprite()
self.addChild(block)
// ... etc etc etc ...
}
Đó là rất nhiều mã cho những gì là cuối cùng một đồ họa, cảnh tĩnh - thậm chí trước khi bạn bắt đầu thêm code để làm cho nó thành một trò chơi (xử lý đầu vào , hành vi của đối phương, gọi lại vật lý làm tăng điểm số hoặc chuyển sang trò chơi, v.v.). Và nó không cho vay tốt với thiết kế, nơi bạn tách logic trò chơi chung ra khỏi nội dung, vì vậy khó thêm nhiều cấp độ vào trò chơi của bạn.
Thay vào đó, bạn có thể sử dụng trình chỉnh sửa SpriteKit trong Xcode để tạo nội dung tĩnh (các cấp) và gắn vào mã cho hành vi động và logic trò chơi. Cũng giống như cách thức, trong IB, bộ điều khiển xem là một cầu nối giữa bảng phân cảnh và mã của bạn, lớp cảnh của bạn (GameScene.swift
trong mẫu) là cầu nối giữa trình chỉnh sửa và mã. Khi bạn tải tệp .sks
vào thời gian chạy (mã cho số này là GameViewController.swift
trong mẫu), nó sẽ trở thành phiên bản của lớp GameScene
và mọi thứ bạn thiết lập trong trình chỉnh sửa đều có thể truy cập dưới dạng nút con của cảnh.
Kiểm tra cuộc đàm phán WWDC là một ý tưởng hay, nhưng bạn đã bỏ lỡ cuộc hội thoại này: xem session 608: Best Practices for Building SpriteKit Games để biết thêm về động lực đằng sau trình chỉnh sửa SpriteKit, cách sử dụng và cách làm việc với nội dung cảnh được tải từ .sks
tệp trong mã cảnh của bạn.
Tuyệt vời! 20 phút đầu tiên của video đó chính xác là những gì tôi cần! –
Tôi tìm thấy tệp .sks một chút hạn chế.Nó đôi khi dường như mất các đối tượng tôi thêm vào, và các lần khác nó hoàn nguyên các thay đổi mà tôi tạo ra (các chế độ Mô phỏng và Chỉnh sửa). Nếu không có chế độ xem lớp, tôi không biết tệp .sks này hữu ích như thế nào, cho đến khi Apple thêm nhiều tính năng hơn. Bạn phải đẩy các nút về phía trước và phía sau để làm việc với một hệ thống phân cấp phức tạp. –