Swift - 如何将var分配给未知类

时间:2015-03-15 15:26:36

标签: swift lazy-initialization type-alias

背景:我正在制作一个游戏,其中两个物体(坦克)相互争斗。 在主菜单屏幕上,您可以选择两个将要相互战斗的坦克(在10个不同坦克的列表中)。 用于移动和触发单个/特定坦克的算法来自可从菜单中选择的每个玩家的单独的.swift(辅助)类。 (没有用户交互 - 战斗的所有代码都在这些类中)

在各个玩家类中,只定义了两个函数:player1TankMove()和player2TankMove()。

class Player1: gameSceneDelegate {

func player1TankMove() {
    // some code that defines the movement and shooting of the Tank
}

func player2TankMove() {
    // some code that defines the movement and shooting of the Tank
}
}

这些类中有十个(Player1,Player2,Player3 ......),每个类的player1TankMove()方法彼此完全不同。

正如您所看到的,我正在使用GameScene中的委托来连接TankMove()函数,以便它们可以在该类中使用:

protocol gameSceneDelegate {
    func player1TankMove()
    func player2TankMove()
}
class GameScene: SKScene, SKPhysicsContactDelegate { ... //entire GameScene code 

我的问题是,当我从MainMenuViewController转换到GameScene类时,如何设置正确的类?

我会使用懒惰的实例化吗?如果是这样,如果我不知道我将访问哪个类/ swift文件(Player1.swift,Player2.swift等),我将如何声明它'懒惰'?

有更好的方法吗?

目前我可以访问正确的player1TankMove()函数并且坦克正常工作:

var tank1 = Player1()
tank1.player1TankMove() // used inside the update() function

但是,因为tank1需要是未知的特定类的实例,所以我不确定如何确定要声明的类型。我需要使用一种类型吗?泛型?看起来这是一个相当普遍的问题,我知道如何处理其他语言,但我不知道如何在Swift中编写代码。

0 个答案:

没有答案