Swift 执行相同的代码行

Swift 执行相同的代码行,swift,sprite-kit,Swift,Sprite Kit,因此,我有不同类型的等级单位,目前使用以下代码随机生成: let diceRoll = arc4random_uniform(2) if (diceRoll == 0) { imageName = "Road" theType = LevelType.road } else if (diceRoll == 1) { imageName = "Water" theType =

因此,我有不同类型的等级单位,目前使用以下代码随机生成:

 let diceRoll = arc4random_uniform(2)

    if (diceRoll == 0) {

            imageName = "Road"
            theType = LevelType.road

    } else if (diceRoll == 1) {

            imageName = "Water"
            theType = LevelType.water
    } 
但我目前正试图让一个等级单位在允许其他等级单位繁殖之前繁殖一定数量的数量(例如,我希望道路等级类型在允许随机化者更改等级类型之前繁殖20次我目前正在使用此代码繁殖等级单位:

    var levelBoolean:Bool = false
    let diceRoll = arc4random_uniform(1)
    let LevelBlock: [Int] = [0, 1] // 1 , 2, 3, 5, 6, 7, 8, 9]
    let numberOfLevelUnitsSpawned = 20

    if(levelBoolean == false)  {

        levelBlockRandomiser = LevelBlock[Int(arc4random_uniform(UInt32(LevelBlock.count)))]

            levelBoolean = true   
    }

    if (levelBoolean == true) {

        if (levelBlockRandomiser == 0) {

            for (var i = 0; i < Int(numberOfLevelUnitsSpawned); i++) {

                imageName = "Road"
                theType = LevelType.road
                i++
            }
          }
        }

    if (levelBlockRandomiser == 1) {

        for (var i = 0; i < Int(numberOfLevelUnitsSpawned); i++) {

                imageName = "Water"
                theType = LevelType.water
                i++

            }
          }
var-levelBoolean:Bool=false
让骰子滚动=arc4random_均匀(1)
LevelBlock:[Int]=[0,1]//1,2,3,5,6,7,8,9]
假设所典当的LevelUnits数量=20
if(levelBoolean==false){
levelBlockRandomiser=LevelBlock[Int(arc4random_统一(UInt32(LevelBlock.count)))]
levelBoolean=true
}
if(levelBoolean==true){
if(levelBlockRandomiser==0){
对于(变量i=0;i
我所要做的就是让一个等级类型产生一定的次数,然后在这个等级类型完成后再产生另一个等级类型

我做错了什么

编辑:

不确定我是否解释得足够好,但当一个等级单位在游戏中生成时,它首先必须确定该等级单位的等级类型。生成该等级单位的代码在另一个类中

因此,它不断地询问后一个是什么级别类型,因此它返回到开始,并再次进行检查,以确定下一个级别单元的下一个级别类型,依此类推

我试图通过for循环和布尔变量实现的是,让它再次选择某个级别类型,直到达到相同级别类型的20个,然后再通过级别类型随机选择一次又一次。但它似乎不想这样做,因为它一直在随机生成不同的级别类型

编辑2:

好的,那么级别生成代码是:

var initialUnits:Int = 10 

func addLevelUnits() {

    for (var i = 0; i < initialUnits; i++ ) {

        createLevelUnit()   
    }
}

func createLevelUnit() {

    let levelUnit:LevelUnit = LevelUnit()
    worldNode.addChild(levelUnit)
    levelUnit.zPosition = -1
    levelUnit.levelUnitWidth = screenWidth
    levelUnit.levelUnitHeight = levelUnitHeight
    levelUnit.direction = direction
    levelUnit.setUpLevel()

    levelUnit.position = CGPointMake( 0 ,  levelUnitCounter * levelUnitHeight)

    levelUnitCounter++

}
var初始单位:Int=10
func addLevelUnits(){
对于(变量i=0;i

代码引用的setUpLevel函数是选择level类中包含的级别类型的函数,我正试图更改它。

您的
for
循环目前有点中断-您在
for
以及每个循环中递增
i
。因此您将得到i=0,2,4,6,8等。您还反复设置相同的图像名称和类型变量。此代码应该更像:

for (var i = 0; i < Int(numberOfLevelUnitsSpawned); i++) {
     imageName = "Water" // These 2 lines are still wrong though
     theType = LevelType.water
}
for(变量i=0;i
您的循环没有任何作用,它们只是重复设置变量的值,但它们并没有真正产生新的精灵

循环中需要包含生成代码,例如:

for (var i = 0; i < Int(numberOfLevelUnitsSpawned); i++) {
   imageName = "Road"
   theType = LevelType.road

   spawnNewObject(imageName, theType)
}
for(变量i=0;i
你说得对。我将从答案中去掉这一部分。因此,我在原始帖子的编辑部分详细解释了我的情况。我遇到的问题是,生成等级单位的代码在另一个类中@Michael@Astrum代码在另一个类中不是问题。请添加生成,以便我们可以帮助您。您获得了ch吗“你想看看吗?”苏丹说