在Swift中,我试图创建一个64 SKSpriteNode的数组。我想先将它初始化为空,然后我会把Sprites放在前16个单元格,最后16个单元格(模拟一个象棋游戏)。
从我在文档中的理解,我会期望像:
var sprites = SKSpriteNode()[64];
要么
var sprites4:SKSpriteNode [64];
但它不工作。
在第二种情况下,我得到一个错误说:“固定长度数组尚不支持”。这是真的吗?对我来说,听起来像一个基本的功能。
我需要通过他们的索引直接访问元素。
固定长度数组尚不支持。这是什么意思?不是你不能创建很多东西的数组 – 显然你可以让a = [1,2,3]得到一个三个Ints的数组。这意味着简单的数组大小不是你可以声明为类型信息。
原文链接:https://www.f2er.com/swift/321137.html如果你想要一个nils数组,你首先需要一个可选类型的数组 – [SKSpriteNode?],而不是[SKSpriteNode] – 如果你声明一个非可选类型的变量,无论是一个数组或单个值,它不能为零。 (还要注意,[SKSpriteNode?]不同于[SKSpriteNode]?…你想要一个可选数组,而不是一个可选数组。)
Swift在设计上非常明确地要求初始化变量,因为关于未初始化引用的内容的假设是C(和一些其他语言)中的程序可能变得有错误的方式之一。所以,你需要明确要求一个包含64个nils的[SKSpriteNode?]数组:
var sprites = [SKSpriteNode?](count:64,repeatedValue: nil)
这实际上返回一个[SKSpriteNode?]?,但是:可选的sprite的可选数组。 (有点奇怪,因为init(count:,repeatedValue :)应该不能返回nil。)要使用数组,你需要解开它。有几种方法可以做到这一点,但在这种情况下,我喜欢可选的绑定语法:
if var sprites = [SKSpriteNode?](count:64,repeatedValue: nil) { sprites[0] = pawnSprite }