我正在尝试在 iOS 上使用 Sprite Kit 制作游戏。我有一个带有 SKView 的 UIViewController,并且我正在使用一个 SKScene。
现在在我的场景中,我正在初始化一个“Player”类,它只是我编写的一个自定义类,它是 NSObject 的子类。问题是我需要知道自定义类中的屏幕尺寸是多少。据我所知,在我的自定义类中知道屏幕大小的唯一方法是在 Player 的初始化程序中从场景中传递它。
有没有更优雅的方法来做到这一点?谢谢你。
我正在尝试在 iOS 上使用 Sprite Kit 制作游戏。我有一个带有 SKView 的 UIViewController,并且我正在使用一个 SKScene。
现在在我的场景中,我正在初始化一个“Player”类,它只是我编写的一个自定义类,它是 NSObject 的子类。问题是我需要知道自定义类中的屏幕尺寸是多少。据我所知,在我的自定义类中知道屏幕大小的唯一方法是在 Player 的初始化程序中从场景中传递它。
有没有更优雅的方法来做到这一点?谢谢你。
你可以[UIScreen mainScreen].bounds
在你的 Player 类中使用。也可以查看 a 的applicationFrame
和scale
属性UIScreen
。
您可能会争辩说,Player
首先知道屏幕尺寸并不优雅,但尽管如此,这是一种无需将信息传递到Player
.
您可以简单地从 SKNode 派生播放器类。然后,您可以将其添加到场景层次结构中,然后您就有了对场景的引用。
您仍然可以拥有一个“模型”类,其中包含存储在自定义播放器节点类中的播放器数据和方法。
从 MVC 的角度来看,“播放器”是模型,它实际上不需要知道屏幕大小,因为这是一个视图属性。也许你只是把它倒过来,你真的想用播放器类中的信息在视图端做一些事情?