एक बात लगभग हर ऐप और गेम में आम है, डेटा को स्टोर और पुनर्प्राप्त करने की आवश्यकता है। यहां तक कि सबसे सरल गेम ऐप संस्करण संख्या को सहेजने के लिए SQLite का उपयोग कर सकता है, जिसका उपयोग अपग्रेड करने पर संगतता सुनिश्चित करने के लिए किया जा सकता है, या गेम की ध्वनि को चालू या बंद करने जैसी सरल सेटिंग्स।
यदि आपने कभी डेटाबेस के साथ अधिक काम नहीं किया है या कोरोना एसडीके में डेटाबेस सुविधाओं का उपयोग नहीं किया है, तो चिंता न करें। यह वास्तव में एक अपेक्षाकृत सीधी प्रक्रिया है जो लूए की शक्ति और कोरोना एसडीके में उपयोग किए गए SQLite डेटाबेस इंजन के लिए धन्यवाद। यह ट्यूटोरियल एक सेटिंग टेबल बनाने और दोनों से जानकारी संग्रहीत करने और पुनर्प्राप्त करने की प्रक्रिया के माध्यम से चलता है।
ध्यान रखें कि यह तकनीक उपयोगकर्ता-आधारित सेटिंग्स को संग्रहीत करने से परे जा सकती है। उदाहरण के लिए, यदि आपके पास ऐसा गेम है जिसे "गेम" मोड और "आर्केड" मोड जैसे विभिन्न गेम मोड का उपयोग करके खेला जा सकता है। वर्तमान सेटिंग्स को स्टोर करने के लिए इस सेटिंग्स तालिका का उपयोग किया जा सकता है। डेटा का कोई भी अन्य टुकड़ा जिसे आप लगातार बने रहना चाहते हैं भले ही उपयोगकर्ता गेम से बाहर निकल जाए और इसे फिर से शुरू कर दे।
डेटाबेस शुरू करना और सेटिंग्स तालिका बनाना।
पहली चीज़ जो हमें करने की ज़रूरत है वह SQLite लाइब्रेरी घोषित करें और हमारे ऐप को बताएं कि डेटाबेस फ़ाइल कहां खोजें। इस कोड को रखने के लिए सबसे अच्छी जगह मुख्य.लुआ फ़ाइल के शीर्ष पर अन्य आवश्यक बयानों के साथ सही है। यदि कोई भी नहीं मिला है तो डेटाबेस फ़ाइल बनाई जाएगी, और हम इसे दस्तावेज़ फ़ोल्डर में संग्रहीत करेंगे ताकि हम इसे पढ़ सकें और इसे लिख सकें।
"sqlite3" स्थानीय डेटा_पैथ = system.pathForFile ("data.db", system.DocumentsDirectory) की आवश्यकता है; db = sqlite3.open (data_path);
ध्यान दें कि कैसे "डीबी" चर स्थानीयकरण नहीं किया जाता है। हमने यह सुनिश्चित करने के लिए यह किया है कि हम अपने पूरे प्रोजेक्ट में डेटाबेस तक पहुंच सकते हैं। आप सभी डेटाबेस फ़ंक्शंस के लिए एक विशिष्ट .lua फ़ाइल भी बना सकते हैं और डेटाबेस को उस फ़ाइल में स्थानांतरित कर सकते हैं।
इसके बाद, हमें डेटाबेस तालिका बनाने की आवश्यकता है जो हमारी सेटिंग्स को स्टोर करेगा:
स्थानीय sql = "तालिका बनाएं यदि सेटिंग्स को सेट नहीं किया गया है (नाम, मान);" डीबी: exec (sql);
यह कथन हमारी सेटिंग्स तालिका बनाता है। ऐप लोड होने पर हर बार इसे चलाने के लिए ठीक है क्योंकि यदि तालिका पहले से मौजूद है, तो यह कथन कुछ भी नहीं करेगा। आप इस कथन को सही तरीके से नीचे डाल सकते हैं जहां हमने डेटाबेस घोषित किया है या उस फ़ंक्शन में जो आपके ऐप को चलाने के लिए सेट करता है। मुख्य आवश्यकता है (1) ऐप लॉन्च होने पर हर वक्त उन बयानों को निष्पादित करने के लिए और (2) सेटिंग्स को लोड या सहेजने के लिए किसी भी कॉल से पहले इसे निष्पादित करें।
डेटाबेस में सेटिंग्स को सहेज रहा है।
फ़ंक्शन सेट सेटिंग (नाम, मान) sql = "सेटिंग्स से हटाएं जहां नाम = '" .. नाम .. "'"; डीबी: exec (sql) sql = "सेटिंग्स में प्रवेश करें (नाम, मूल्य) मूल्य ('" ..नाम .. "'," .. मूल्य .. ");"; डीबी: निष्पादन (एसक्यूएल) अंत
फ़ंक्शन सेटसेटिंगस्ट्रिंग (नाम, मान) सेटसेटिंग (नाम, "'" .. मान .. "'"); अंत
सेटिंग फ़ंक्शन तालिका में सहेजी गई पिछली सेटिंग्स को हटा देता है और हमारे नए मान को सम्मिलित करता है। यह दोनों पूर्णांक और तारों के साथ काम करेगा, लेकिन स्ट्रिंग को सहेजने के लिए मूल्य के चारों ओर सिंगल कोट्स की आवश्यकता होती है, इसलिए हमने सेटसेटिंग स्ट्रिंग फ़ंक्शन का उपयोग हमारे लिए अतिरिक्त काम करने के लिए किया है।
डेटाबेस से सेटिंग्स लोड हो रहा है।
फ़ंक्शन मिलते हैं (नाम)
स्थानीय एसक्यूएल = "चयन * सेटिंग्स से कहां नाम = '" .. नाम .. "' '; स्थानीय मूल्य = -1;
डीबी में पंक्ति के लिए: nrows (sql) मान = row.value; समाप्त
वापसी मूल्य; अंत
फ़ंक्शन getSettingString (नाम) स्थानीय sql = "चयन * सेटिंग्स से जहां नाम = '" .. नाम .. "'"; स्थानीय मूल्य = '';
डीबी में पंक्ति के लिए: nrows (sql) मान = row.value; समाप्त
वापसी मूल्य; अंत
उपर्युक्त के रूप में, हमने कार्यों को दो संस्करणों में तोड़ दिया है: एक पूर्णांक के लिए और एक तार के लिए। हमने ऐसा करने का मुख्य कारण यह है कि यदि डेटाबेस में कोई सेटिंग मौजूद नहीं है तो हम उन्हें विशिष्ट मानों के साथ प्रारंभ कर सकते हैं। GetSetting फ़ंक्शन एक -1 लौटाएगा, जो हमें बताएगा कि सेटिंग सहेजी नहीं गई है। GetSettingString एक खाली स्ट्रिंग वापस कर देगा।
GetSettingString फ़ंक्शन पूरी तरह से वैकल्पिक है। इसके बीच एकमात्र अंतर और सामान्य getSetting फ़ंक्शन डेटाबेस में कुछ भी नहीं मिलने पर वापस किया जाता है।
हमारी सेटिंग्स तालिका का उपयोग करना।
अब जब हमारे पास कड़ी मेहनत की गई है, तो हम आसानी से स्थानीय डेटाबेस में सेटिंग लोड और सहेज सकते हैं। उदाहरण के लिए, हम निम्नलिखित कथन के साथ ध्वनि म्यूट कर सकते हैं:
setSetting ( 'ध्वनि', झूठी);
और हम आवाज़ बजाने के लिए वैश्विक फ़ंक्शन में सेटिंग का उपयोग कर सकते हैं:
फ़ंक्शन प्लेसाउंड (साउंडआईडी) अगर (getSetting ('sound')) तो audio.play (soundID) endend
ध्वनि को वापस चालू करने के लिए, हम बस ध्वनि सेटिंग को सत्य पर सेट करते हैं:
setSetting ( 'ध्वनि', true);
इन कार्यों के बारे में अच्छा हिस्सा यह है कि आप सेटिंग्स तालिका में तार या पूर्णांक सहेज सकते हैं और उन्हें आसानी से पुनर्प्राप्त कर सकते हैं। यह आपको अपने उच्च स्कोर को बचाने के लिए किसी खिलाड़ी के नाम को सहेजने से कुछ भी करने की अनुमति देता है।




