【问题标题】:Get SKView size inside custom class in iOS在 iOS 的自定义类中获取 SKView 大小
【发布时间】:2023-03-06 09:15:01
【问题描述】:

我正在尝试在 iOS 上使用 Sprite Kit 制作游戏。我有一个带有 SKView 的 UIViewController,我正在使用一个 SKScene。

现在在我的场景中,我正在初始化一个“Player”类,它只是我编写的一个自定义类,它是 NSObject 的子类。问题是我需要知道自定义类中的屏幕尺寸是多少。据我所知,在我的自定义类中知道屏幕大小的唯一方法是在 Player 的初始化程序中从场景中传递它。

有没有更优雅的方法来做到这一点?谢谢。

【问题讨论】:

    标签: ios sprite-kit


    【解决方案1】:

    你可以在你的 Player 类中使用[UIScreen mainScreen].bounds。还可以查看 UIScreenapplicationFramescale 属性。

    您可能会争辩说,让Player 知道屏幕尺寸一开始并不优雅,但这是一种无需将信息传递到Player 的方法。

    【讨论】:

    • 是的,行得通,我会考虑你所说的,谢谢!
    【解决方案2】:

    您可以简单地从 SKNode 派生播放器类。然后,您可以将其添加到场景层次结构中,然后您就有了对场景的引用。

    您仍然可以拥有一个“模型”类,其中包含存储在自定义播放器节点类中的播放器数据和方法。

    从 MVC 的角度来看,“播放器”是模型,它实际上不需要知道屏幕大小,因为这是一个视图属性。也许你只是把它倒过来,你真的想用播放器类中的信息在视图端做一些事情?

    【讨论】:

    • 我要做的是让玩家围绕屏幕中心点进行轨道定义的轨道。当玩家点击屏幕右侧时,玩家会从一个轨道(半径可能为 50 px)过渡到下一个轨道(半径为 100 px)。正如你所说,也许我应该重新考虑我的结构,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多