मैं दृश्य संपादक के न्यूनतम / उपयोग के साथ एकता में खेल कैसे बना सकता हूं?


24

मैं पूरी तरह से C # में एक खेल लिखना चाहता हूँ। एक इंजन की मेरी खोज में, मुझे यूनिटी 3 डी मिला, लेकिन सभी ट्यूटोरियल और प्रलेखन एक दृश्य संपादक और यूनिटी आईडीई के बारे में बोल रहे हैं, जिसमें आप क्लिक करते हैं और दृश्य और स्क्रिप्ट बनाने के लिए चारों ओर इशारा करते हैं।

मैं ऐसा नहीं करना चाहता। मैं अपने से दूर चीजों को अमूर्त डिजाइनरों पर पूर्ण कोड कवरेज पसंद करते हैं। मैं केवल स्क्रैच से शुद्ध C # कोड लिखना चाहता हूं या यदि इसके अलावा एकता स्क्रिप्ट की आवश्यकता हो। मुझे ऐसा करने के बारे में कोई स्पष्टीकरण या दस्तावेज नहीं मिला; मैं यूनिटी का उपयोग करके और विज़ुअल एडिटर का न्यूनतम (या नहीं) उपयोग करके गेम कैसे बना सकता हूं?


1
बंद करने के लिए मतदान, यह एक रूपरेखा है जिसे एकता के बारे में एक प्रश्न के रूप में प्रच्छन्न किया गया है।
ब्लूराजा - डैनी पफ्लुगुफ़े

2
मैं वास्तव में निश्चित नहीं हूं कि मैं इससे सहमत हूं, हालांकि मैं एक समुदाय के करीबी वोट को नहीं पलटूंगा। हालांकि, मैं ध्यान दूंगा कि यह सवाल विशेष रूप से एकता की कुछ क्षमता के बारे में पूछ रहा है: उत्तर जो पता नहीं हटा सकते हैं। चलो नहीं विषय प्रश्न बंद एक में इस बारी अगर हम करने के लिए, ठीक नहीं है?
जोश

2
अधिकांश डेवलपर्स अपने स्तर को डिजाइन करने के लिए कुछ बिंदु पर एक दृश्य संपादक की तलाश करते हैं, क्योंकि कोड में हर छोटे डूडोड की स्थिति स्थापित करने की तुलना में नेत्रहीन स्थिति सामान इतना सरल है। एक ही GUI लेआउट के संपादन / डिजाइन के लिए जाता है। इस सामान का पहले से ही निर्मित होना एक बहुत बड़ा लाभ है IMHO।
बंमज़ैक

4
I prefer writing my own level editor which provides only the stuff really neccessary for my gameठीक है कि मूल रूप से इसका मतलब है कि आप गेम इंजन का उपयोग नहीं करना चाहते हैं, आप ग्राफिक्स लाइब्रेरी के साथ प्रोग्रामिंग करना चाहते हैं। हालांकि आप पहले से ही एक तकनीकी रोड़ा मारा जब ऐसा करने की कोशिश कर रहा है, तो ... मुझे यहाँ एक विरोधाभास लगता है।
झॉकिंग

3
@ झटके तो हमारे खेल इंजन की रक्षा बहुत अलग प्रतीत होती है। एक क्लास लाइब्रेरी एक गेम इंजन है यदि यह कैमरा गेम, एक साउंड सिस्टम और शायद थोड़ा सा भी भौतिक सामान जैसे विशिष्ट गेम कार्यों को अमूर्त करता है, लेकिन एक डिजाइनर की आवश्यकता नहीं है और मेरी राय में इसका उपयोग भी नहीं होना चाहिए ।
रे

जवाबों:


27

मैं एकता में एक पूर्ण शुरुआत कर रहा हूं, लेकिन इस समय मैं इसे कैसे करता हूं, और यह संपादक के उपयोग को कम करता है:

संपादक में, मेरे पास केवल तीन ऑब्जेक्ट हैं: एक खाली गेमऑबजेक्ट जिसे "मुख्य" कहा जाता है, एक कैमरा और एक प्रकाश। और यह केवल इसलिए है क्योंकि अभी तक मैं केवल एक ही कैमरे और एक एकल प्रकाश के साथ काम करता हूं, इसलिए यह इस तरह से तेज था। बाद में मैं शायद उन्हें हटा दूंगा, और केवल "मुख्य" ही रहेगा।

"एसेट्स / माईस्क्रिप्स" में मेरे पास एक वर्ग "मेन" है, जिसे एक व्यवहार के रूप में "मुख्य" गेम ऑबजेक्ट में जोड़ा जाता है। जिसका अर्थ है कि जब कार्यक्रम शुरू होता है, तो तात्कालिक रूप से "मुख्य" वर्ग और इसकी विधि को कहा जाता है। "मुख्य" वर्ग इस प्रकार है:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

खेल में मैं गतिशील रूप से इस तरह का वातावरण बनाता हूं:

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

लेकिन ऐसा इसलिए है क्योंकि अभी तक मैं केवल एक प्रोटोटाइप बना रहा हूं। बाद में मैं ब्लेंडर में संपादित कुछ अच्छी चीजों के साथ क्यूब्स को बदलना चाहूंगा। जिसके लिए उन्हें ब्लेंडर में बनाने की आवश्यकता होगी, और उन्हें "प्रीफैब्स" के रूप में इकाइयों में आयात करना होगा। फिर, मैं इसी तरह C # कोड से "प्रीफैब्स" को तुरंत इंस्टाल करूंगा।

यदि आप किसी ऑब्जेक्ट को घटनाओं पर प्रतिक्रिया करना चाहते हैं, जैसे कि अन्य ऑब्जेक्ट्स के साथ टकराव, तो आप ऑब्जेक्ट को त्वरित रूप से जोड़ सकते हैं और उन्हें गतिशील रूप से एक व्यवहार वर्ग जोड़ सकते हैं, जो कि मोनोबीहेवियर से प्राप्त C # क्लास है। उदाहरण के लिए, यदि आप एक कार रखना चाहते हैं, तो आप एक कार को प्रीफ़ैब बनाते हैं, और खेल में इसके व्यवहार के लिए "कारहेवियर" क्लास लिखते हैं।

इस तरह से आप संपादक के साथ बातचीत को कम से कम कर सकते हैं, हालांकि शायद पूरी तरह से शून्य तक नहीं। अब यह इस बात पर निर्भर करता है कि क्या यह आपके लिए स्वीकार्य समाधान है।


2
मैं कहता हूँ कि यह एक एकता शुरुआत के लिए एक बहुत स्पष्ट और ठोस जवाब की तरह लग रहा है :)
रे

धन्यवाद! मैं अन्यथा एक अनुभवी प्रोग्रामर हूं, लेकिन एकता में यह मेरा पहला प्रोजेक्ट है और यह समाप्त हो गया है। मैंने अभी तक प्रीफ़ैब का उपयोग नहीं किया है। ऐसी कुछ जटिलताएँ हो सकती हैं, जिनके बारे में मुझे अभी जानकारी नहीं है, इसलिए मैं नमक के दाने के साथ अपनी सलाह लेने की सलाह देता हूँ। वैसे, एकता में सीरियलाइजेशन मेरे लिए थोड़ा प्रति-सहज महसूस करता है। मुझे इसका गहराई से अध्ययन करना होगा, और यह कुछ डिज़ाइन निर्णयों को प्रभावित कर सकता है।
विलिअम बुउर

9

एकता के साथ काम करते समय आपको एकता के संपादक के भीतर कुछ काम करना होगा; यह बस कैसे एकता काम करता है।

हालांकि विशाल आप एक प्रोग्रामर एकता के संपादक के भीतर नहीं होता है के रूप में कर रहा था क्या के बहुमत; स्क्रिप्ट फाइलें एक बाहरी आईडीई में लिखी गई बाहरी पाठ फाइलें हैं, और एक प्रोग्रामर के रूप में आप केवल एकता के संपादक का उपयोग करते हैं, जो स्क्रिप्ट को चलाने के लिए लिंक करता है और फिर गेम को चलाने के लिए Play को हिट करता है। यह परियोजना सेटिंग्स में कक्षाओं में लिंक करने के विपरीत नहीं है, और फिर अपने आईडीई के भीतर रन मार रहा है।

केंद्रीय दृश्य संपादक वाले अधिकांश अन्य खेल विकास उपकरण भी सीमित और अनम्य स्क्रिप्टिंग समर्थन से दुखी हैं, लेकिन एकता को उस नुकसान का सामना नहीं करना पड़ता है। हालाँकि, एकता के लिए बनाई गई हर चीज अंततः विज़ुअल एडिटर के माध्यम से जाती है, इस कोर इंटरफ़ेस में एकता कोड के खेल इंजन में चलने वाले कस्टम कोड के लिए बहुत सारी परियोजनाएं शामिल हैं। अनुभवी प्रोग्रामर, इस विकास के माहौल को खारिज नहीं करते हैं, इसे सीमित प्रोग्रामिंग क्षमता के साथ कुछ गेम क्रिएटर के लिए क्लिक करते हैं!

(यह भी, ऐसा लगता है कि पुस्तक मैं वर्तमान में लिख रहा हूं आपके लिए एक शानदार संसाधन होगा, क्योंकि यह अनुभवी प्रोग्रामर पर लक्षित है)


1
आपकी पुस्तक पढ़ने के बीच में जब मैं इस उत्तर पर आया था
अधिकतम रीनर

6

मुझे विश्वास है कि आप जो देख रहे हैं वह एकता के लिए फ़ुटाइल फ्रेमवर्क है।

मूल रूप से, आप तब दृश्य संपादक के साथ सामान को "ड्रैग एंड ड्रॉप" किए बिना या गड़बड़ किए बिना स्क्रिप्ट का उपयोग करके अपनी सारी प्रोग्रामिंग कर सकते हैं। आप सभी की जरूरत है अपने दृश्य में एक एकल GameObject है जो आपके पूरे खेल के लिए कंटेनर होगा। आप तब सब कुछ प्रक्रियात्मक रूप से करते हैं जैसा कि आप एक गैर-दृश्य संपादक के साथ करेंगे।

अस्वीकरण: जबकि Futile बहुत कोड केंद्रित है, यह अपरिहार्य है कि आपको कुछ फैशन में यूनिटी संपादक के साथ गड़बड़ करना होगा। लेकिन फ्यूचाइल के साथ यह बहुत कम है।


2

मैं यहां सभी अच्छे उत्तरों को जोड़ना चाहूंगा, विशेष रूप से @jocking के उत्तर:

यूनिटी में मैंने लगभग जो कुछ भी पाया है, वह प्रोजेक्ट फ़ोल्डर ट्री में एक सादा पाठ समकक्ष है। मैंने सीधे प्रीफ़ैब और अन्य गेम ओब्जेक्ट्स को बिना यूनिटी खोले संपादित किया है, और उन परिवर्तनों को अन्य देवों द्वारा सफलतापूर्वक पाया गया।

जब तक मैं अब तक Futile फ्रेमवर्क के बारे में ज्यादा नहीं जानता था, यह सब कुछ पाने के लिए एक बहुत बढ़िया तरीका है।

मैं वर्तमान में स्क्रिप्ट-आधारित होने के बजाय सभी ड्रैग-एंड-ड्रॉप सामान का उपयोग करता हूं, लेकिन इसे बदलना होगा क्योंकि मेरे लक्ष्य में प्रक्रियात्मक रूप से उत्पन्न स्तर और बुरे लोग होंगे।

मेरे दो सेंट कहते हैं कि मूल रूप से एकता में कुछ वस्तुओं की आवश्यकता होती है, फिर एक बाहरी संपादक में स्क्रिप्ट पर भरोसा करें। आप सादे पाठ में लगभग सब कुछ कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.