เนื่องจากฉันยังใหม่กับการเขียนโปรแกรม Swift iOS และฉันมีคำถามเกี่ยวกับการสร้าง "รูปแบบสำเร็จรูป" หรือไม่ ฉันมีพื้นหลังของ Unity และมีบางอย่างเช่นรูปแบบสำเร็จรูปที่คุณสามารถสร้างอินสแตนซ์ได้หลายครั้ง มีอะไรที่คล้ายกับสิ่งนั้นใน Swift หรือ Xcode หรือไม่? โดยเฉพาะอย่างยิ่งฉันกำลังมองหาสิ่งนั้นใน SpriteKit เพื่อสร้างสำเนาของ SKNode กับลูก ๆ
Swift และรูปแบบสำเร็จรูป?
คำตอบ (1)
ฉันคิดว่าสิ่งที่ใกล้เคียงที่สุดกับรูปแบบสำเร็จรูปคือชั้นเรียน
คุณสามารถสร้างคลาสย่อยของ SKnode หรือโหนดอื่นๆ ได้ เช่น SKSpriteNode จากนั้นตั้งค่าคลาสนั้นให้ทำสิ่งที่คุณต้องการ จากนั้นสร้างอินสแตนซ์ของคลาสนั้น
class Box : SKSpriteNode{
init(){
//Setup your node the way you want it
super.init(texture: nil, color: UIColor.red, size: CGSize(width: 50, height: 50))
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
//create instance and add to scene.
let box = Box()
self.addChild(box)
คุณยังสามารถตั้งค่าโหนดแล้วใช้ฟังก์ชันคัดลอกเพื่อคัดลอกโหนดนี้พร้อมกับโหนดย่อยได้
let block1 = SKSpriteNode(color: UIColor.red, size: CGSize(width: 50, height: 50))
let child = SKSpriteNode(color: UIColor.blue, size: CGSize(width: 25, height: 25))
block1.addChild(child)
let copy = block1.copy() as! SKSpriteNode
addChild(copy)
person
Magnus Ewerlöf
schedule
11.07.2017
มันได้ผล! ฉันลองใช้วิธีการนั้นมาก่อน แต่มันก็ไม่ได้ผลด้วยเหตุผลบางประการ ขอบคุณมาก!
- person galdev; 12.07.2017
iirc สิ่งนี้ใช้ไม่ได้กับโหนดที่มีเนื้อหาทางฟิสิกส์ (เนื้อหาทางฟิสิกส์ไม่ได้รับการคัดลอกเท่าที่ควร) ... อย่างน้อยมันก็ใช้งานไม่ได้ในอดีต ดังนั้นอย่าลืมตรวจสอบอีกครั้ง ใครบางคนรู้สึกอิสระที่จะแก้ไขฉันหากนี่ไม่ใช่ปัญหาอีกต่อไป ... @galdev
- person Whirlwind; 12.07.2017