Swift และรูปแบบสำเร็จรูป?

เนื่องจากฉันยังใหม่กับการเขียนโปรแกรม Swift iOS และฉันมีคำถามเกี่ยวกับการสร้าง "รูปแบบสำเร็จรูป" หรือไม่ ฉันมีพื้นหลังของ Unity และมีบางอย่างเช่นรูปแบบสำเร็จรูปที่คุณสามารถสร้างอินสแตนซ์ได้หลายครั้ง มีอะไรที่คล้ายกับสิ่งนั้นใน Swift หรือ Xcode หรือไม่? โดยเฉพาะอย่างยิ่งฉันกำลังมองหาสิ่งนั้นใน SpriteKit เพื่อสร้างสำเนาของ SKNode กับลูก ๆ


person galdev    schedule 11.07.2017    source แหล่งที่มา


คำตอบ (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
comment
มันได้ผล! ฉันลองใช้วิธีการนั้นมาก่อน แต่มันก็ไม่ได้ผลด้วยเหตุผลบางประการ ขอบคุณมาก! - person galdev; 12.07.2017
comment
iirc สิ่งนี้ใช้ไม่ได้กับโหนดที่มีเนื้อหาทางฟิสิกส์ (เนื้อหาทางฟิสิกส์ไม่ได้รับการคัดลอกเท่าที่ควร) ... อย่างน้อยมันก็ใช้งานไม่ได้ในอดีต ดังนั้นอย่าลืมตรวจสอบอีกครั้ง ใครบางคนรู้สึกอิสระที่จะแก้ไขฉันหากนี่ไม่ใช่ปัญหาอีกต่อไป ... @galdev - person Whirlwind; 12.07.2017