कुछ समय पहले मैंने एकता के साथ काम करना शुरू कर दिया था और मैं अभी भी कसकर युग्मित स्क्रिप्ट के मुद्दे के साथ संघर्ष करता हूं। मैं इस समस्या से बचने के लिए अपना कोड कैसे बना सकता हूं?
उदाहरण के लिए:
मैं अलग-अलग लिपियों में स्वास्थ्य और मृत्यु प्रणाली रखना चाहता हूं। मैं अलग-अलग विनिमेय चलना चाहता हूं, जो मुझे खिलाड़ी चरित्र को स्थानांतरित करने के तरीके को बदलने की अनुमति देता है (भौतिकी-आधारित, मारियो बनाम तंग, सुपर चिक बॉय की तरह चिकने नियंत्रण)। स्वास्थ्य स्क्रिप्ट को डेथ स्क्रिप्ट का एक संदर्भ रखने की आवश्यकता है, ताकि खिलाड़ियों के स्वास्थ्य तक पहुंचने पर यह डाई () विधि को ट्रिगर कर सके। डेथ स्क्रिप्ट को चलने वाली स्क्रिप्ट के लिए कुछ संदर्भ रखना चाहिए, ताकि मृत्यु पर चलना अक्षम हो जाए (I 'लाश से थक गया)।
मैं आम तौर पर इंटरफेस बनाऊंगा, जैसे IWalking
, IHealth
और IDeath
, ताकि मैं अपने बाकी कोड को तोड़ने के बिना इन तत्वों को पूरी तरह से बदल सकूं। मैं उन्हें खिलाड़ी वस्तु पर एक अलग स्क्रिप्ट द्वारा स्थापित करना होगा, कहते हैं PlayerScriptDependancyInjector
। हो सकता है कि स्क्रिप्ट सार्वजनिक होगा IWalking
, IHealth
और IDeath
गुण, निर्भरता को खींचने और उचित स्क्रिप्ट छोड़ने के द्वारा निरीक्षक से स्तर डिजाइनर द्वारा सेट किया जा सकता है, ताकि।
यह मुझे आसानी से खेल की वस्तुओं में आसानी से व्यवहार जोड़ने की अनुमति देगा और हार्ड-कोडेड निर्भरता के बारे में चिंता नहीं करेगा।
एकता में समस्या
समस्या यह है कि एकता में मैं निरीक्षक में इंटरफेस का खुलासा नहीं कर सकते है, और अगर मैं अपने खुद के निरीक्षकों लिखते हैं, संदर्भ धारावाहिक मिल नहीं होते, और यह अनावश्यक काम का एक बहुत कुछ है। इसलिए मैं कसकर-युग्मित कोड लिखने के साथ बचा हुआ हूं। मेरी Death
स्क्रिप्ट एक InertiveWalking
स्क्रिप्ट के संदर्भ को उजागर करती है । लेकिन अगर मैं तय करता हूं कि मैं चाहता हूं कि खिलाड़ी चरित्र को कसकर नियंत्रित करें, तो मैं TightWalking
स्क्रिप्ट को केवल खींचकर छोड़ सकता हूं, मुझे स्क्रिप्ट को बदलने की आवश्यकता है Death
। वह चूसता है। मैं इससे निपट सकता हूं, लेकिन मेरी आत्मा हर बार रोती है कि मैं ऐसा कुछ करूं।
एकता में इंटरफेस के लिए पसंदीदा विकल्प क्या है? मैं इस समस्या को कैसे हल करूं? मुझे यह मिल गया , लेकिन यह मुझे बताता है कि मैं पहले से ही क्या जानता हूं, और यह मुझे नहीं बताता कि एकता में कैसे करना है! यह भी चर्चा करता है कि क्या किया जाना चाहिए, कैसे नहीं, यह स्क्रिप्ट के बीच तंग युग्मन के मुद्दे को संबोधित नहीं करता है।
सभी मुझे लगता है कि उन लोगों के लिए लिखे गए हैं जो एक गेम डिज़ाइन पृष्ठभूमि के साथ एकता में आए थे जो सिर्फ कोड कैसे सीखते हैं, और नियमित डेवलपर्स के लिए एकता पर बहुत कम संसाधन हैं। क्या एकता में अपने कोड की संरचना करने का कोई मानक तरीका है, या क्या मुझे अपनी विधि का पता लगाना होगा?
The problem is that in Unity I can't expose interfaces in the inspector
मुझे नहीं लगता कि मैं समझता हूं कि "इंस्पेक्टर में इंटरफ़ेस को उजागर करें" से आपका क्या मतलब है क्योंकि मेरा पहला विचार "क्यों नहीं?"