我有一个关于在我的主要GameplayScene中使用另一个类的问题。我想要做的是让手机X轴的动作左右移动角色。这是我在MotionClass.swift中的内容
open class Item{
var name = String()
var numberOfCarbs = Int()
var category = String()
init(name n:String,numberOfCarbs c:Int,category t:String){
name = n
numberOfCarbs = c
category = t
}
}
open class Restaurant{
var items = [Item]()
var cateogry = [String]()
var restaurantName = String()
init(restaurantName n:String,category c:[String],items i:[Item]){
restaurantName = n
cateogry = c
items = i
}
现在我试图在我的GameplayScene.swift中使用motionBegan函数调用这个类,但我不知道如何去做。我有变量' grapple'作为MotionClass?但我不知道从哪里去。这样做有什么好的例子吗?
答案 0 :(得分:1)
我认为您可能对SKScene
子类的目的感到困惑,这是您的MotionClass目前所在的。 (主要思想)是一次只使用一个SKScene:如果你需要来自MotionClass的东西,那么你应该把它变成普通类,而不是SKScene
子类。
我认为您可能还需要让自己更熟悉OOP ......在static
属性/功能之外,您不会打电话给#34;一个类,你实例化它(你创建一个对象:])
因此,如果您想要在GamePlassClass中访问MotionClass,则需要对MotionClass对象的引用
这可以通过一个简单的全局变量来完成......我建议把它放到你的GameViewController.swift中:
// Here is a global reference to an 'empty' motion class object..
var global_motionClassObject = MotionClass()
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// ...
if let view = self.view as! SKView? else {
let scene = MotionClass(size: view.frame.size)
// Assign our global to the new scene just made:
global_motionClassObject = scene
scene.scaleMode = .aspectFit
view.presentScene(scene)
}
// ...
}
现在在您的GamePlayClass或其他任何地方,您可以通过调用global_motionClassObject
来访问MotionClass
但是,这可能无法达到预期效果,因为我担心您可能需要将MotionClass重组为SKScene以外的其他内容:)