新しいXCodeにアップデートする前に、Swiftゲームを動作させてコンパイルしていましたが、突然多くのエラーが発生しました。これが私が修正できなかった2つです。
func centerOnNode(node: SKNode ) {
let cameraPositionInScene = node.scene?.convertPoint(node.position, fromNode: node.parent!)
var y = CGFloat(node.parent?.position.y - cameraPositionInScene?.y!)
// ERROR:
// Operand of postfix ‘!’ should have optional types; Type is CGFLoat
let x = CGFloat(node.parent.position.x - cameraPositionInScene.x)
// ERROR:
// SKNode? does not have a member position
// push the camera a bit up
y -= 75
node.parent.position = CGPointMake(x, y)
私は本当にこれを取得していないと思います!と?ビジネス。ラッピング、アンラッピング、オプションタイプ。これはJavaまたはC#の用語で何ですか?
これは、node.scene
が決して nil
、そして決して:でnode.parent
はない と仮定して機能しますnil
。
let cameraPositionInScene = node.scene!.convertPoint(node.position, fromNode: node.parent!)
var y = CGFloat(node.parent!.position.y - cameraPositionInScene.y)
let x = CGFloat(node.parent!.position.x - cameraPositionInScene.x)
それらが可能である場合はnil
、代わりに次のコードを使用してください。
if let cameraPositionInScene = node.scene?.convertPoint(node.position, fromNode: node.parent!) {
if let parent = node.parent {
var y = CGFloat(parent.position.y - cameraPositionInScene.y)
let x = CGFloat(parent.position.x - cameraPositionInScene.x)
// push the camera a bit up
y -= 75
parent.position = CGPointMake(x, y)
}
}
これは、値がないことを確認するためにテストし、ある場合はnil
何もしません(最初の例のようにクラッシュする代わりに)。
オプションの仕組みの説明については、Appleの記事を参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加