मेरे पास बिना किसी संस्करण नियंत्रण के एक एकता परियोजना है, और मुझे इसे किसी अन्य डेवलपर के साथ साझा करने की आवश्यकता है ताकि हम दोनों परियोजना पर काम कर सकें।
एकता एसेट्स के साथ अच्छा खेलने के लिए कौन सी रणनीतियों का उपयोग किया जाना चाहिए?
मेरे पास बिना किसी संस्करण नियंत्रण के एक एकता परियोजना है, और मुझे इसे किसी अन्य डेवलपर के साथ साझा करने की आवश्यकता है ताकि हम दोनों परियोजना पर काम कर सकें।
एकता एसेट्स के साथ अच्छा खेलने के लिए कौन सी रणनीतियों का उपयोग किया जाना चाहिए?
जवाबों:
एकता में संस्करण नियंत्रण का ठीक से समर्थन करने के लिए एक अंतर्निहित सुविधा है।
बस File-> Project Settings-> Editor में जाएं और एक्सटर्नल वर्जन कंट्रोल को इनेबल करें।
मैं Git का उपयोग करने की सलाह देता हूं, यह मुफ़्त है और आसपास सबसे अच्छा है।
कुछ समय पहले मैंने अपने ब्लॉग पर संस्करण नियंत्रण (Git का उपयोग करके) के बारे में लिखा था
कहानी संक्षिप्त में:
बाह्य संस्करण नियंत्रण सक्षम करें फ़ाइल-> प्रोजेक्ट सेटिंग्स-> संपादक और रीपो पर अनावश्यक सामान से बचने के लिए .ignignore फ़ाइल बनाएं (यह वास्तव में आवश्यक नहीं है, लेकिन यह विकास के दौरान अनमोल होगा)।
यहां बताया गया है कि फ़ाइल को कैसा दिखना चाहिए:
[Oo]bj/
[Tt]emp/
[Ll]ibrary
#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs
.gitingore
एकता परियोजनाओं के लिए मैं उपयोग लेकिन कुछ ommissions साथ: [Bb]uild/
, *.booproj
, sysinfo.txt
। मुझे पूरा यकीन है कि मैं जो भी उपयोग करता हूं, वह GitHub के नए-रेपो टेम्प्लेट्स फॉर यूनिटी ( github.com/github/gitignore/blob/master/Unity.gitignore ) पर आधारित है, जो किसी भी ऑब्जेक्टिव-सी (जब iOS को लक्षित करता है)।
एकता 3.0 को तोड़फोड़ के साथ अच्छी तरह से खेलने के लिए कॉन्फ़िगर किया गया है। (पहले की तुलना में कम से कम अच्छे) मुझे नहीं पता कि यह केवल प्रो संस्करण में है या नहीं, मुझे जांचना होगा।
सामान्य तौर पर, सबसे अधिक सलाह संस्करण नियंत्रण प्रणाली यूनिटी एसेट सर्वर है।
एकता विशिष्ट - हर समय विभिन्न दृश्यों और विभिन्न कोड फ़ाइलों पर काम करती है, और दूसरे व्यक्ति के परिवर्तनों को मैन्युअल रूप से मर्ज करती है। यदि आप दोनों को एक ही दृश्य पर काम करने की आवश्यकता है, तो इसे डुप्लिकेट करें और परीक्षण के रूप में प्रतिलिपि का उपयोग करें। अन्यथा, यदि आप दोनों एक ही दृश्य को संशोधित करते हैं, तो एक व्यक्ति के परिवर्तन दूसरे को अधिलेखित कर देंगे। आप अभी भी अपनी स्रोत फ़ाइलों के लिए स्रोत नियंत्रण का उपयोग कर सकते हैं, बस उन्हें एक बार बनाए जाने के बाद, फ़ाइल सिस्टम में या एकता के माध्यम से उन्हें बिल्कुल भी स्थानांतरित न करें।
शुरुआती सलाह - अपने आप को एक सभ्य अंतर / मर्ज टूल प्राप्त करें (मुझे WinMerge पसंद है ) और इसका उपयोग करने के लिए उपयोग करें कि यह देखने के लिए कि अन्य व्यक्ति ने क्या बदलाव किए हैं, और मैन्युअल रूप से विवादित फ़ाइलों में परिवर्तन को मर्ज करें। एक केंद्रीय प्रलेखन स्थान सेट करें, जैसे। Google लेखन दस्तावेज़ या विकी, और अपना दस्तावेज़ वहां रखें - प्रलेखन में एक मूल सुविधा सूची होनी चाहिए, ताकि आप जान सकें कि आप क्या लक्ष्य बना रहे हैं, और आदर्श रूप से एक कार्य सूची, जो स्पष्ट संकेत के साथ सुविधा सूची से निकली है। जो कार्य पर काम कर रहा है। एक दूसरे से बात करने के लिए एक मोटा विचार पाने के लिए कि किस कार्य को करने की आवश्यकता है और उन्हें सूची से बाहर कर दें जैसा कि वे प्राप्त करते हैं। यह देखने के लिए कि क्या सब कुछ अभी भी मान्य है और यदि आपको किसी प्राथमिकता को पुनः प्राप्त करने की आवश्यकता है, तो सूची का पुनरीक्षण और पुनर्मूल्यांकन करते रहें।
मैं एक ऐसी टीम के साथ काम करता हूं जो खुद को डिफेक्टिव स्टूडियो कहती है। हम वर्षों से एक ही मुद्दे से जूझ रहे हैं, और अभी हाल ही में मैंने अंततः गेमबिज को मर्ज करने में मेरी मदद करने के लिए एक एक्सटेंशन दिया और लिखना शुरू किया।
मूल रूप से दृष्टिकोण एक विंडो में एक इंस्पेक्टर जैसा इंटरफ़ेस बनाने के लिए है जो तुलना के लिए प्रत्येक गेमबजेक्ट, घटक और संपत्ति के साथ-साथ साइड-लाइन करता है, और एक तरफ से दूसरे तक मूल्यों (या संपूर्ण वस्तुओं) को कॉपी करने के लिए बटन प्रदान करता है। यदि आप SerializedProperty
कक्षा से परिचित हैं , तो वही है जो यहाँ काम कर रहा है। हम मूल रूप से एक जीयूआई है कि सही और बाईं ओर के बीच foldout राज्य सिंक्रनाइज़ करता है बनाने के लिए, और ऊर्ध्वाधर अंतरिक्ष बनाता है जहाँ भी एक GameObject
याComponent
केवल दाईं या बाईं ओर मौजूद है। एक तुलनात्मक फ़ंक्शन प्रत्येक स्तर पर समानता की जांच करता है, और समानता की स्थिति के आधार पर प्रत्येक पंक्ति की पृष्ठभूमि को लाल या हरे रंग में बदल देता है। ऐसी कोई भी पंक्ति जिसके बच्चों में अंतर होता है, वह भी लाल हो जाएगी, और हमने पेड़ की फिर से खोज करने और उन सभी वस्तुओं का विस्तार करने के लिए एक निफ्टी बटन भी शामिल किया जो अलग-अलग हैं या उनके बच्चों में अंतर हैं।
साथ ही, मास्क फ़ील्ड का एक सेट है जो आपको कुछ घटक प्रकारों को तुलना से बाहर फ़िल्टर करने देता है। GameObject नाम, परत और टैग जैसी विशेषताओं की तुलना भी की जाती है। हम उपयोग करते हैं SerializedObject
और संपत्तियों के SerializedProperty
माध्यम से लूप करते gameObject
हैं, और उन्हें वैसे ही खींचते हैं जैसे वे निरीक्षक में खींचे जाते हैं। यह स्थिरता सुनिश्चित करता है, और कोड के लिए बहुत आसान की एक बिल्ली है!
एक अंतिम निफ्टी विस्तार यह है कि तुलना प्रक्रिया (ट्रिगर जब ऑब्जेक्ट लोड किए जाते हैं और जब भी कोई परिवर्तन किया जाता है) एक एड-हॉक कॉरटीन में चलाया जाता है जिसे EditorWindow.Update
फ़ंक्शन द्वारा अपडेट किया जाता है, ताकि मामले में आप किसी हग कॉम्प्लेक्स ऑब्जेक्ट की तुलना कर रहे हों, खिड़की संपादक बंद नहीं करता है। यह बच्चों के सैकड़ों (या हजार!) के साथ वस्तुओं की तुलना करते समय बहुत जरूरी था। सब के सब, यह एक "लेगो प्रोजेक्ट" की तरह था जैसा कि मेरे दोस्त कहना चाहते हैं, लेकिन निश्चित रूप से एक अमूल्य उपकरण है जो तुरंत हमारे सहयोग वर्कफ़्लो का एक हिस्सा बन गया।
उपकरण, यूनिटी मर्ज को यूनिफाइड विकी पर प्रलेखित किया गया है, जिसमें एक रोडमैप और फीडबैक के लिए एक ई-मेल पता और रिपोर्टिंग शामिल है। यदि आप वास्तव में एक जटिल मर्ज के साथ संघर्ष कर रहे हैं, तो इसे एक शॉट दें और हमें बताएं कि आप क्या सोचते हैं! इसके अलावा, मैंने इसे DLL में बनाने की जहमत नहीं उठाई, इसलिए स्रोत पर घूमने के लिए स्वतंत्र महसूस करें। तदर्थ कोरटाइन कार्यान्वयन और SerializedProperty
जोड़तोड़, साथ ही कुछ GUI ट्रिक्स जिन्हें मैंने समाप्त किया है वे आपके संपादक एक्सटेंशन टूलकिट का एक बड़ा हिस्सा हैं। मुझे उन परिवर्तनों / सुधारों में बहुत दिलचस्पी है जो उपयोगकर्ता हो सकते हैं, इसलिए कृपया संपर्क करें!
यदि आपके पास इसके लिए धन है, तो एकता के प्रो संस्करण के साथ एसेट सर्वर बहुत सभ्य है। मैंने अतीत में एक बड़ी, बहु-व्यक्ति परियोजना पर इसका उपयोग किया है और इसने काम किया है। वेनिला संस्करण नियंत्रण के लिए, उसने वही किया जो हमने उससे करने की अपेक्षा की थी।
मैं एक एकता परियोजना के साथ एक SVN रिपॉजिटरी का उपयोग करने की कोशिश की है और यह एक परेशानी का एक सा था। हालांकि, काम करने से पहले हमने इस विचार को समाप्त कर दिया। एकता बहुत सारी बैकअप फाइलें रखती है जो मैं यह जानने के लिए समय नहीं लेना चाहता था कि क्या होगा अगर वे सर्वर से सिंक नहीं हुए। मुझे लगता है, थोड़ी चालाकी के साथ, यह संभव हो सकता है लेकिन मुझे इसके साथ अच्छा काम करने का अनुभव नहीं है।
मैंने ड्रॉपबॉक्स की मुफ्त सुविधाओं का उपयोग करके एक छोटा प्रोजेक्ट किया है। इसने मुझे परेशान किया लेकिन हमारे पास कभी कोई मुद्दा नहीं था। और, मुझे नहीं लगता कि हमने उस परियोजना के लिए किसी भी वास्तविक संस्करण नियंत्रण सामान की आवश्यकता को समाप्त कर दिया है, इसलिए मैं बहुत कुछ नहीं बोल सकता कि फाइलों को कैसे पलट दिया जाए या विलय कर दिया जाए।
ड्रॉपबॉक्स प्रति फ़ाइल (कमिट के बजाय) संस्करण का समर्थन करता है और एकता के साथ अच्छी तरह से खेलता है। यह शुरू में मुफ्त (2 गीगाबाइट) और उसके बाद काफी सस्ते (50gig के लिए लगभग $ 10) है। आपको संस्करण इतिहास तक पहुंच प्राप्त करने के लिए पैकरैट एडऑन की आवश्यकता है।
एसवीएन, सीवीएस, जीआईटी आदि के साथ की तरह, आपको यह सुनिश्चित करने की आवश्यकता होगी कि जब आप विकास के प्रत्येक प्रमुख चरण में आते हैं, तो आप टैग फ़ोल्डर बनाते हैं (उदाहरण के लिए, सप्ताह का अंत, मील का पत्थर समाप्त)। उपरोक्त के विपरीत, यदि आप नहीं करते हैं तो इस तरह के एक चरण में वापस जाना बहुत कठिन होगा, क्योंकि आपको हर एक फ़ाइल को अलग-अलग वापस करना होगा। विकास करते समय ध्यान में रखें और आपके पास एसेट सर्वर के भुगतान के बिना एक आसान समय होगा।