Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 斯威夫特和预制件?_Swift_Unity3d_Sprite Kit - Fatal编程技术网

Swift 斯威夫特和预制件?

Swift 斯威夫特和预制件?,swift,unity3d,sprite-kit,Swift,Unity3d,Sprite Kit,因为我是Swift iOS编程新手,所以我对创建“预置”有疑问? 我有Unity的背景,有一些类似预置的东西,你可以多次实例化。在Swift或Xcode中有类似的东西吗?特别是我在SpriteKit中寻找它来创建带有子对象的SKNode副本我认为最接近预制的应该是类 您可以创建一个SKnode或任何其他节点的子类,例如一个SKSpriteNode,然后设置该类来执行您想要的操作。然后创建该类的实例 class Box : SKSpriteNode{ init(){ //S

因为我是Swift iOS编程新手,所以我对创建“预置”有疑问?
我有Unity的背景,有一些类似预置的东西,你可以多次实例化。在Swift或Xcode中有类似的东西吗?特别是我在SpriteKit中寻找它来创建带有子对象的SKNode副本

我认为最接近预制的应该是类

您可以创建一个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)

它起作用了!我以前试过这种方法,但不知什么原因它不起作用。非常感谢你!iirc这不适用于具有物理实体的节点(物理实体不会得到应有的复制)。。。至少它在过去不起作用,所以一定要仔细检查一下。如果这不再是一个问题,有人可以随意纠正我@加尔德夫