使用 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 中的分数 的相关文章

随机推荐

  • 如何使用设备相机在 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 的数字 一段时间以来我一直在试图解决这个问题 我不确定您是否可以将其添加到