在Apple的文档的参考部分中有很多这种事情的实例:
func runAction(_action: SKAction!)
Objective-C'等效'是:
- (void)runAction:(SKAction *)action
让我感到非常重要的是(在Swift参考中)下划线后面有一个空格,而"动作"用斜体字写成.
但我无法弄清楚这是想传达什么.所以也许问题是......参考文献中使用的约定是否有参考?
- 这是我参考下划线使用的参考页面:https: //developer.apple.com/documentation/spritekit/sknode#//apple_ref/occ/instm/SKNode/runAction
Swift 3对如何使用和命名函数/方法参数名称和参数标签进行了一些更改.这会对这个问题及其答案产生影响.@Rickster做了一个很棒的工作,回答了关于_underscores的一个不同的问题,在这些函数中清除了大部分内容,这里:为什么我需要在swift中使用下划线?
我试图检测我的精灵节点是否被触摸,我不知道从哪里开始.
let Pineapple = SKSpriteNode(imageNamed: "Pineappleimg")
Pineapple.userInteractionEnabled = true
Pineapple.position = CGPoint(x: CGRectGetMidX(self.frame) - 200, y: CGRectGetMidY(self.frame));
self.addChild(Pineapple)
Run Code Online (Sandbox Code Playgroud) 要在Objective-C中定义类别位掩码枚举,我曾经输入:
typedef NS_OPTIONS(NSUInteger, CollisionCategory)
{
CollisionCategoryPlayerSpaceship = 0,
CollisionCategoryEnemySpaceship = 1 << 0,
CollisionCategoryChickenSpaceship = 1 << 1,
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现相同的使用Swift?我尝试了枚举,但无法使其正常工作.这是我到目前为止所尝试的.

是否可以从数组中删除多个项目,同时使用索引位置按照.remove(at:i)类似:
伪代码:
myArray.remove(at: 3, 5, 8, 12)
Run Code Online (Sandbox Code Playgroud)
如果是这样,这样做的语法是什么?
更新:
我正在尝试这个,它有效,但下面答案中的扩展更具可读性和合理性,并且实现了与伪代码完全相同的目标.
创建一系列"位置":[3,5,8,12]
let sorted = positions.sorted(by: { $1 < $0 })
for index in sorted
{
myArray.remove(at: index)
}
Run Code Online (Sandbox Code Playgroud) 除了这里提出的问题:用SpriteKit在矩形中画一个洞?由于两者之间没有令人满意的答案,两者之间最显着的区别是这个问题需要缺少解决方法,特别是要求扭转SKCropNodes的功能.
由于孔的随机性,孔的数量以及孔要应用的物体的变化,上述问题可以解决的hacky方式的类型无法解决这个问题中的主要问题.
因此瑞士奶酪的例子如下:
想象一堆随机大小的矩形SKSpriteNodes,充满各种色调的奶酪色.
如何通过从每片奶酪中切出随机圆圈来制作瑞士奶酪?
如果SKCropNodes是圈子,他们只留下圆形的奶酪片而不是从奶酪块中切出孔.有没有办法反转SKCropNodes的行为,所以他们切换孔?
image-masking sprite-kit skspritenode skcropnode skshapenode
在学习游戏的3D图形编程时,我决定通过使用Scene Kit 3D API开始简单.我的第一个游戏目标是构建一个非常简化的模拟MineCraft.只是立方体的游戏 - 它有多难.
下面是我写的一个循环,用于放置100 x 100立方体(10,000)并且FPS性能非常差(~20 FPS).对于Scene Kit,我的初始游戏目标是否过多,或者有更好的方法来解决这个问题吗?
我已经阅读了StackExchange上的其他主题,但感觉不到他们回答我的问题.将暴露的表面块转换为单个网格将不起作用,因为SCNGeometry是不可变的.
func createBoxArray(scene : SCNScene, lengthCount: Int, depthCount: Int) {
let startX : CGFloat = -(CGFloat(lengthCount) * CUBE_SIZE) + (CGFloat(lengthCount) * CUBE_MARGIN) / 2.0
let startY : CGFloat = 0.0
let startZ : CGFloat = -(CGFloat(lengthCount) * CUBE_SIZE) + (CGFloat(lengthCount) * CUBE_MARGIN) / 2.0
var currentZ : CGFloat = startZ
for z in 0 ..< depthCount {
currentZ += CUBE_SIZE + CUBE_MARGIN
var currentX = startX
for x in …Run Code Online (Sandbox Code Playgroud) 我是Swift和SpriteKit的新手.很多SpriteKit动作的样本都在Objective C中,我无法在Swift中映射,也无法工作.
如果运行SKAction,并且在SKAction完成后想要做其他事情,我如何在Swift中做到这一点?
spaceMan.runAction(spaceManDeathAnimation, completion: {
println("red box has faded out")
})
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.
编辑:
for i in 0...29 {
textures.append(SKTexture(imageNamed: "spaceManDeath_\(i)"))
}
spaceManDeathAnimation = SKAction.repeatActionForever(SKAction.animateWithTextures(textures, timePerFrame: 0.15625))
Run Code Online (Sandbox Code Playgroud) 鉴于iPhone 6 Plus正在从1242x2208缩小到1080x1920,而UIKit正在这样做,是否有其他方式可以在屏幕上进行绘图,从而实现绝对(像素完美)绘图而不缩小尺寸?
我想,但不确定,OpenGL和Metal可以在iPhone 6 Plus上绘制像素完美的图形,但不知道如何.我对Core Animation的坐标系意味着什么感到困惑,正如我在其他地方读到的那样,无论Point系统如何,它都可以完成像素完美绘图.
是否可以在iOS中的资产(图像)文件名中使用全范围(比方说)中文?如果没有,文件名,字符串搜索和其他文件处理活动支持哪些大语言部分?
我一直在使用带有Alpha的24位.png,来自Photoshop,只是尝试了一个与OpenGL ES配合得很好的.psd,但是Metal没有看到Alpha通道.
SceneKit中粒子绝对最高效的纹理格式是什么?
如果需要,这是一张要测试的表.
它看起来是白色的......右键单击并保存为空白区域.这是一套阿尔法重的戒指.如果你眯着眼睛看屏幕,你可能几乎不能把它们弄出来:
夸张的示例用例:
https://www.dropbox.com/s/vu4dvfl0aj3f50o/circless.mov?dl=0
//任何人的附加点都可以猜出视频中左右环之间的差异.
swift ×6
sprite-kit ×4
ios ×3
objective-c ×2
scenekit ×2
skspritenode ×2
3d ×1
arrays ×1
bit-masks ×1
completion ×1
declaration ×1
filenames ×1
function ×1
handler ×1
indexpath ×1
metal ×1
opengl-es ×1
optimization ×1
particles ×1
performance ×1
pixel ×1
skaction ×1
skcropnode ×1
skshapenode ×1
touch ×1
touchesbegan ×1
unicode ×1
xcode ×1