使用 Swift 将自定义“数字”图像添加到 SKLabelNode 作为 SpriteKit 中的分数

2024-01-11

我基本上想在 Singles 中添加自定义字体编号(带有图像),并使用 SpriteKit 在我的游戏中添加它们作为我的分数。

这是字体图像样式

它们是从 0 到 9 的数字

一段时间以来我一直在试图解决这个问题。

我不确定您是否可以将其添加到 SKLabelNode 或者是否必须将其放入类中。


SKLabelNode不允许使用位图字体。如果您的自定义字体是 TTF,您将能够使用自定义字体SKLabelNode。这里有一个解释:SKlabelNode自定义字体 https://stackoverflow.com/questions/21368283/sklabelnode-custom-font

在您的情况下,由于您想使用位图字体,因此您需要创建一个类来执行此操作。您可以子类化SKNode或不。但你会想要拥有一个SKNode充当“根”,然后让您的号码的每个数字成为SKSpriteNode(这些将是代表数字的根节点的子节点)。

您需要确定的一件事是如何处理数字对齐(水平和垂直)。

我之前使用过自己的自定义类来绘制数字,并且通常将其配置为可水平调整(左对齐、右对齐和居中)。但出于懒惰,我通常总是垂直居中。

这听起来可能很复杂,但很容易做到。你只需要有

  • 为每个数字分配位图纹理图集的方法。更容易 如果它们按 0-9 的顺序排列。
  • 设置/获取数值的方法
  • 可以转换的方法 将数字分解为单独的数字。你需要这个来计算哪个 数字映射到哪个字符。
  • 计算数字宽度的方法。如果 你的字体是等宽的,那么这很容易。如果不是,那么 您需要根据数字宽度和字母间距来计算宽度。对于等宽字体,您可能仍然需要考虑字母间距。
  • 计算数字高度的方法。这应该很简单,就像 0-9 一样 高度相同。
  • 删除已有的方法SKSpriteNode和 添加每个新数字。每个新数字都被适当的金额抵消 基于对齐。

您的自定义类应该根据设置的数值构建正确的SKSpriteNodes 代表数字。

最后一个问题的一些更新信息涉及如何将数组与SKTexture。该代码未经编译测试,旨在为您提供更好的想法。

// Example of storing digits in an array. Assumes you are putting this in an atlas and your
// sub-texture names are 0, 1, etc. If not you'll have to adjust the code accordingly
var numTextures = [SKTexture]()
let numberAtlas = SKTextureAtlas(named: "NumberAtlas")

for i in 0 ..< 10 {
    numTextures.append(numberAtlas.textureNamed("\(i)"))
}

// To get the texture for a digit

func textureForDigit(digit:Int) -> SKTexture {
    return numTextures[digit]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Swift 将自定义“数字”图像添加到 SKLabelNode 作为 SpriteKit 中的分数 的相关文章

  • Flutter - 选择 TextFormField 时键盘不显示

    我目前遇到一个问题 当我选择任何一个时 键盘不会出现TextFormFielda 内的小部件Form小部件 这是表单的代码 位于我的内部CreateAccountForm有状态的小部件 import package flutter mate
  • 如何以编程方式设置设备(UI)方向?

    希望屏幕 UI 上的所有内容都能够从横向左向右旋转 反之亦然 我该怎么做呢 这是私人的吗 我知道 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation inte
  • UILocalNotification 在后台 10 分钟后不提示

    In didFinishLaunchingWithOptions调用函数的定时器循环httpRequest每 1 分钟间隔一次 BOOL application UIApplication application didFinishLaun
  • 使用远程图像创建 MSSticker

    我正在尝试找出使用网络上托管的图像创建 MSStickers 的方法 我可以使用本地图像创建 MSStickers 例如 NSString imagePath NSBundle mainBundle pathForResource imag
  • 如何在 Swift 中使用indexesOfObjectsPassingTest:

    IndexOfObjectsPassingTest 的声明在 Swift 中看起来像这样 func indexesOfObjectsPassingTest predicate AnyObject Int CMutablePointer
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • .showsPhysics 内存泄漏

    我最近花了 5 个小时尝试调试 Spritekit 应用程序中的内存泄漏 应用程序启动后 我注意到内存使用量略有上升 我花了 5 个小时中的 3 个小时挖掘参考资料 了解强与弱的关系ARC https developer apple com
  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • `navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起

    我有这个片段 const getCurrentPosition gt new Promise
  • Objective-C UILabel 作为超链接

    我正在尝试做一个UILabel一个链接UIWebView 我怎样才能做一个UILabel作为超链接 您可以使用 UITapGestureRecognizer 它将实现与您想要的类似的功能 UILabel myLabel UILabel al
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • 使用未解析的标识符“FlurryAdInterstitial”

    我正在尝试整合Flurry Interstitial Ads使用cocoapods in Swift and Xcode 7 1 1 我正在关注开发人员雅虎网站上的此文档 https developer yahoo com flurry d
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • 贴纸包会在模拟器上使 iMessage 崩溃,但在 iPhone 上不会崩溃

    按照 Apple 的在线说明和视频在 Xcode 中创建了一个贴纸包 所有图像的尺寸均正确且远低于文件大小阈值 如果我在我的实体 iPhone 上构建并运行贴纸包 一切都会完美运行 如果我在模拟器上构建并运行贴纸包 对于任何模拟的 iPho
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • watchOS 错误:控制器接口描述中的未知属性

    我将 WKInterfacePicker 添加到情节提要中 并将其连接到界面控制器中的 IBOutlet 运行应用程序时 它在控制台中显示一条错误消息 控制器的接口描述 watchPicker 中的未知属性 Code interface I
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 叠加 SKScene 未显示

    我正在尝试将 SKScene 覆盖在 SCNScene 上 当我在模拟器和 iPhone6 上运行我的应用程序时 overlayScene SKScene 按预期显示 但是当我尝试在 iPhone5 上运行它 尝试了 2 个不同的设备 时
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • 如何使用设备相机在 iPhone 应用程序中以编程方式拍照?

    在 iPhone 应用程序中 我们可以采取pictures在某些特定的时间间隔以编程方式通过使用iPhone 设备相机 如果是的话请告诉我如何在 iPhone 应用程序中以编程方式拍照 请帮助和建议 Thanks UIImagePicker
  • Python 习语“if __name__ == '__main__'”在 clojure 中的等价物是什么?

    我正在涉足 clojure 并且在尝试确定与这种常见 python 习惯用法等效的 clojure 和 或 Lisp 时遇到了一些麻烦 习惯用法是 在 python 模块的底部通常有一些测试代码 然后是运行该代码的语句 例如 mymodul
  • 片段已添加,对话框片段?

    我有一个显示良好的对话框片段 但有时当我尝试显示它时 我不断收到IllegalStateException 下面是日志猫 java lang IllegalStateException Fragment already added Sele
  • 如何阻止 PHP sleep() 影响我的整个 PHP 代码?

    所以 在我的街机上 howlingdoggames com 我有一个积分系统 每次您访问正在进行游戏的页面时 都会给您一个积分 为了减少滥用 我想进行某种延迟 因此仅在 45 秒后授予 这是我尝试过的 if SESSION lastgame
  • 当没有这样的条件调用时,useEffect Hook 条件调用的 React 错误

    React 正在抱怨下面的代码 说它useEffect有条件地被调用 import React useEffect from react import ReactDOM from react dom function App const d
  • AWS 快照和 AMI 之间的区别

    所以我很难弄清楚这两者之间的具体区别是什么 据我了解 快照只是磁盘驱动器的备份 而 AMI 是整个系统 或者我应该说的实例 的备份 但整个系统在技术上不是完全位于磁盘驱动器上吗 如果是这样的话 那么没有明显的区别 我错过了一些东西吗 有两种
  • 获取 AWS CodeBuild 的 GitHub git 分支

    我将 AWS CodeBuild 设置为从 GitHub 自动构建 其他 CI 服务为分支提供了环境变量 但我找不到适用于 AWS CodeBuild 的环境变量 有一个CODEBUILD SOURCE VERSION设置为pr 7 whe
  • Bash 不会自动完成文件(Tab)

    bash 中的自动完成功能 使用 Tab 适用于文件夹 但是not与文件 我运行的是 Ubuntu 13 10 我还没碰过我的 bashrc file 底部的部分是这样的 bashrc文件看起来 与bash 完成安装和更新的部分 enabl
  • Javascript深度复制对象[重复]

    这个问题在这里已经有答案了 可能的重复 克隆 JavaScript 对象最有效的方法是什么 https stackoverflow com questions 122102 what is the most efficient way to
  • 在 Qt 中显示图像以适合标签大小

    我已经尝试了几种在表单上显示图像的方法 但没有一个能按照我想要的方式工作 我读过很多地方 最简单的方法是创建标签并使用它来显示图像 我有一个标签 其大小由布局指定 但是如果我使用像素图将图像加载到其中 则标签的大小将调整为图像的大小 如果我
  • 如何使用 Boost 库智能指针管理对象生命周期?

    有一个场景我需要使用shared ptr和weak ptr智能指针来解决 两个线程 线程 1 和 2 正在使用名为 A 的共享对象 每个线程都有对该对象的引用 线程 1 决定删除对象 A 但同时线程 2 可能正在使用它 如果我使用share
  • SignalR 连续消息传递

    我有一个网络项目 需要从外部肥皂服务更新网页上的统计信息 日志 我决定采用的方法是使用 signalR 通过使用执行服务方法并将结果返回给所有连接的客户端的代码 该代码将连续执行 在服务调用之间有一定的延迟 我无法将所有部分放在一起 可能是
  • 为什么 Visual Studio Code Git 显示驱动器上的所有更改?

    我在 Macbook 上使用 Visual Studio Code 1 6 0 我发现 VS Code 的 Git 列出了大量更改 甚至是那些不在我的工作文件夹中的更改 当我将鼠标悬停在这些上时 我会得到一个工具提示 该文件位于当前工作区之
  • 按顺序拆分 Parallel.Foreach 循环上的负载

    我需要处理列表中的一百万个元素 将它们粗暴地扔进并行 ForEach只会让CPU饱和 相反 我将元素主列表分成几部分 并将子列表放入并行循环中 List
  • 我可以在 SSRS 中跨数据源“加入”吗?

    我有两个数据源 一个 Oracle 和一个 Sql Server 由于我之前的情况 就像我发现它时的情况一样 Oracle 数据库中的某些列包含来自 Sql Server 数据库中的查找表的 PK 我正在尝试创建一个 Sql Server
  • 如何在Notepad++中删除当前行并添加新行?

    如何在Notepad 中删除当前行并添加新行 这两个操作很常见 但我找不到任何关键设置如何在 Notepad 中执行它们 任何插件都可以完成这项工作吗 Ctrl L cuts the current line and Ctrl Shift
  • 我可以 gzip 压缩所有 html 内容(页面)吗

    我试图找出定义哪些页面应该进行 gzip 压缩以及何时发送纯 html 内容是否有任何原则 如果你们可以分享您在 gzip 压缩项目的一部分时所做的决定 那将会很有帮助 一个好主意是进行基准测试 对比数据下降的速度有多快 压缩得有多好 如果
  • MIPS:求 5 个整数的平均值

    客观的 根据用户输入 使用五个寄存器查找平均值 Example 1 3 2 9 4 Output 3 输出是 3 因为 3 8 是小数 我希望它是整数 我的目标是不使用数组 但我在添加所有 5 个寄存器时遇到问题 data prompt1
  • 多索引数据帧删除每组最大值的行

    我有一个像这样的多索引数据框 PID Fid x y A 1 2 3 2 6 1 3 4 6 B 1 3 5 2 2 4 3 5 7 我想删除每个患者 PID 具有最高 x 值的行 我需要获取一个包含剩余行和所有列的新数据框 以继续对这些数
  • 使用 Swift 将自定义“数字”图像添加到 SKLabelNode 作为 SpriteKit 中的分数

    我基本上想在 Singles 中添加自定义字体编号 带有图像 并使用 SpriteKit 在我的游戏中添加它们作为我的分数 这是字体图像样式 它们是从 0 到 9 的数字 一段时间以来我一直在试图解决这个问题 我不确定您是否可以将其添加到