2016-10-28 35 views
0

在我的關卡編輯器中,我創建了一個名爲「windmill」的SKSpritenode。 爲了這一點,我已經添加了一個用戶數據屬性(旋轉|字符串|左)Spritekit | Swift3 |級別編輯器 - 從關卡編輯器引用SKSpritenodes的用戶數據

//I have no problem in loading the object in the GameScene class. 
enumerateChildNodes(withName: "windmill") {windmillNode,_ in 
     windmill = windmillNode as? SKSpriteNode 
     windmillNode.zPosition = 3 
     windmillNode.move(toParent: _gameNode) 
} 

但我想要做的就是調用用戶數據屬性,並根據旋轉值。我想設置角度。

---錯誤「不能分配給類型'_'的不可變表達式
是表達是否正確?

var angle: Int 
    if (windmillNode.userData?.object(forKey: "rotation")) = "left" { 
     angle = 360 
    } else { 
     angle = -360 
    } 

回答

1

你的單=是賦值,你想要做一個比較,以便使用==。所以,你的表情看起來

let rotation = windmillNode.userData?.value(forKey: "rotation") 
    if let rotation = rotation as? String { 
     print(rotation == "left") 
    } 
+0

謝謝一些進展。必須聲明任何字符串的操作工作。如果String(描述:windmillNode.userData?.object(forKey:「rotation」))==「left」{} – user3482617

+0

但是,if語句沒有找到任何旋轉值爲「left」的SKSpritenodes,所以它總是-360 。這是從編輯器調用節點的userdata的正確方法嗎? – user3482617

+0

想通了。編輯器中的「左」值正在通過「可選(左)」。在userdata上做了一個打印並發現了。不知道的想法,但當我==「可選(左)」,角度是360而不是-360。 – user3482617

0
var angle: Int 
    if String(describing: windmillNode.userData?.object(forKey: "rotation")) == "Optional(left)" { 
      angle = 360 
     } else { 
      angle = -360 
     } 

當您設置一個在關卡編輯器中的節點的用戶數據值爲一個字符串

當在代碼中調用用戶數據值時,值在我的實例中返回爲可選(左)。不確定它返回,因爲這不僅僅是「左」

更改==「字符串」,以正確匹配這個指定正確的角度。