2014-11-05 5 views
7

मैंने स्प्राइटकिट (उद्देश्य-सी के साथ) का उपयोग कर एक्सकोड में काफी सरल (इस बिंदु पर, प्रयोगात्मक) "गेम" बनाया है।मैं स्प्राइटकिट संपादक के माध्यम से बनाए गए किसी आइटम का SKSpriteNode कैसे प्राप्त करूं?

मुझे पता है कि मैन्युअल रूप से एक SKSpriteNode ऑब्जेक्ट कैसे बनाएं और इसे SKScene में जोड़ें - लेकिन मैं विपरीत करने की कोशिश कर रहा हूं - जहां मैंने XCode SceneKit GUI के अंदर स्प्राइट बनाया (और इसे एक नाम दिया) अब मैं अपने कोड में को पुनः प्राप्त करना चाहता हूं।

एक्सकोड के साथ पूर्व अनुभव में, आप इसे @property UIOutlet [आदि] घोषित करके और फिर इसे आईबी/स्टोरीबोर्ड यूआई के अंदर एक संदर्भ आउटलेट के रूप में जोड़कर करेंगे - लेकिन मुझे ऐसा करने का कोई भी तरीका नहीं मिल रहा है SpriteKit यूआई के अंदर।

मैं एक संपत्ति (एक एसकेएसप्रेट नोड के रूप में) बना सकता हूं, और इसे मेरे स्प्राइटकिट ऑब्जेक्ट के समान ही नामित कर सकता हूं - और यह एसकेएससीन (डीबगर में) के तहत दिखाई देता है, लेकिन "शून्य" - यानी "संबद्ध" नहीं है एक्सकोड स्प्राइटकिट यूआई में बनाई गई ऑब्जेक्ट के साथ।

क्या मुझे कुछ याद आ रहा है - या यह पूरी तरह से गलत कर रहा है? : -O

उत्तर

10

आप स्प्राइट किट संपादक में एक नोड के नाम गुण सेट हैं, तो आप Obj- में, नोड, स्विफ्ट में उपयोग कर सकते हैं

if let node = self.childNodeWithName("NodeName") as? SKSpriteNode { 
    // Set up your sprite here 
} 

या

SKSpriteNode *node = (SKSpriteNode *)[self childNodeWithName:@"NodeName"]; 

द्वारा सी।

+0

नोट: यह तंत्र केवल तभी काम करता है जब नोड दृश्य का प्रत्यक्ष बच्चा हो। यदि यह अधिक जटिल है तो आपको एकाधिक कॉल के साथ मैन्युअल रूप से नोड पेड़ पर चलने की आवश्यकता होगी। – bshirley

+6

@bshirley SpriteKit नोड पेड़ के माध्यम से रिकर्सिवली खोज करेगा यदि आप नाम के सामने "//" जोड़ते हैं (उदा।, "// नोडनाम")। – 0x141E

+0

@ 0x141E क्या आपने यह प्रश्न देखा है http://stackoverflow.com/questions/38525232/replacing-calayer-and-cabasicanimation-with-skscene-and-sctions – ItsMeAgain

संबंधित मुद्दे

 संबंधित मुद्दे