ఎలా కరోనా SDK లో గేమ్ డేటా లోడ్ మరియు సేవ్

డేటా మరియు సెట్టింగులు గేమ్ నిల్వ చేయడానికి SQLite ఎలా ఉపయోగించాలి

దాదాపు ప్రతి అప్లికేషన్ మరియు ఆట సాధారణంగా ఉంది డేటా నిల్వ మరియు తిరిగి అవసరం. అనువర్తనం వెర్షన్ సంఖ్యను భద్రపరచడానికి SQLite ను కూడా చాలా సరళమైన ఆట ఉపయోగించుకుంటుంది, ఇది నవీకరణలు జరుపుతున్నప్పుడు అనుకూలతను నిర్ధారించడానికి ఉపయోగించబడుతుంది, లేదా ఆట యొక్క ధ్వని ఆన్ లేదా ఆఫ్ చేయడం వంటి సాధారణ సెట్టింగులు.

మీరు డేటాబేస్తో ఎక్కువ పనిని చేయకపోయినా లేదా కరోనా SDK లో డేటాబేస్ ఫీచర్లను ఉపయోగించకుంటే, చింతించకండి. ఇది నిజానికి LUGO యొక్క శక్తి మరియు కరోనా SDK ఉపయోగించిన SQLite డేటాబేస్ ఇంజిన్కు సాపేక్షంగా నేరుగా ప్రక్రియ కృతజ్ఞతలు. ఈ ట్యుటోరియల్ ఒక సెట్టింగుల పట్టికను సృష్టించే ప్రక్రియ ద్వారా నడుస్తుంది మరియు దాని నుండి సమాచారాన్ని నిల్వ చేయడం మరియు తిరిగి పొందడం రెండింటి ద్వారా జరుగుతుంది. ఐప్యాడ్ అనువర్తనాలను ఎలా అభివృద్ధి చేయాలి.

ఈ టెక్నిక్ యూజర్ ఆధారిత సెట్టింగులను నిల్వ మించి ఉండవచ్చని గుర్తుంచుకోండి. ఉదాహరణకు, మీరు "కథ" మోడ్ మరియు "ఆర్కేడ్" మోడ్ వంటి విభిన్న గేమ్ మోడ్లను ఉపయోగించి ఆడగల ఆట ఉన్నట్లయితే. ప్రస్తుత మోడ్ను నిల్వ చేయడానికి ఈ సెట్టింగుల పట్టిక ఉపయోగించబడుతుంది. లేదా వినియోగదారు ఆట నుండి నిష్క్రమించి, అది పునఃప్రారంభించబడినా కూడా మీరు నిరంతరంగా ఉండటానికి కావలసిన డేటా ఏ ఇతర భాగం.

స్టెప్ వన్: డేటాబేస్ను ప్రారంభించడం మరియు సెట్టింగులను పట్టిక సృష్టించడం

మేము చేయవలసిన మొదటి విషయం SQLite లైబ్రరీని డిక్లేర్ చేసి డేటాబేస్ ఫైల్ను కనుగొనడానికి మా అనువర్తనాన్ని తెలియజేస్తుంది. ఈ కోడ్ను ఉంచడానికి ఉత్తమమైన ప్రదేశం main.lua ఎగువ భాగంలో ఇతర అవసరమైన ప్రకటనలతో పాటు ఉంది. ఎవరూ దొరకలేదు ఉంటే డేటాబేస్ ఫైల్ సృష్టించబడుతుంది, మరియు మేము అది పత్రాలు ఫోల్డర్ లో నిల్వ చేస్తాము తద్వారా మేము దాని నుండి చదివి అది వ్రాయడానికి.

"sqlite3" అవసరం
స్థానిక data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
DB = sqlite3.open (data_path);

"Db" వేరియబుల్ ఎలా స్థానీకరించబడిందో గమనించండి. మేము మా ప్రాజెక్ట్ అంతటా డేటాబేస్ యాక్సెస్ చేయవచ్చు నిర్ధారించడానికి ఈ పూర్తి చేసిన. మీరు అన్ని డేటాబేస్ విధులు కోసం ఒక ప్రత్యేకమైన .lua ఫైల్ను సృష్టించవచ్చు మరియు డేటాబేస్ను ఆ ఫైల్కు పరిమితం చేయవచ్చు.

తరువాత, మన సెట్టింగులను నిల్వచేసే డేటాబేస్ పట్టికను సృష్టించాలి:

స్థానిక sql = "సెట్టింగులను (పేరు, విలువ) కలిగి ఉండకపోతే TABLE సృష్టించు;"
db: కార్యనిర్వాహకుడు (SQL);

ఈ ప్రకటన మా సెట్టింగుల పట్టికను సృష్టిస్తుంది. ఇది ప్రతిసారీ అనువర్తనం లోడ్ అవుతుందనేది సరైందే ఎందుకంటే పట్టిక ఇప్పటికే ఉన్నట్లయితే, ఈ ప్రకటన ఏదైనా చేయదు. మీరు ఈ ప్రకటనను డేటాబేస్ లేదా రన్ చేయడానికి మీ అనువర్తనాన్ని అమర్చిన ఫంక్షన్లో ప్రకటించిన చోట క్రింద ఉంచవచ్చు. అనువర్తనం ప్రారంభించిన ప్రతిసారీ ఆ ప్రకటనలను అమలు చేయడానికి (1) ప్రధాన అవసరం (2) అమర్పులను లోడ్ చేయడానికి లేదా సేవ్ చేయడానికి ఏదైనా కాల్స్ ముందు అమలు చేయండి.

దశ రెండు: డేటాబేస్కు సేవ్ సెట్టింగ్లు

ఫంక్షన్ సెట్ సెట్టింగు (పేరు, విలువ)
sql = "సెట్టింగులను తొలగించండి పేరు పేరు = '" .. పేరు .. "';
db: కార్యనిర్వాహక (sql)

sql = "INSERT INTO సెట్టింగులు (పేరు, విలువ) విలువలు ('" ..పేజీ .. "," .. విలువ .. ");";
db: కార్యనిర్వాహక (sql)
ముగింపు

ఫంక్షన్ సెట్సెట్టింగ్స్ట్రింగ్ (పేరు, విలువ)
( ' "" పేరు, "" .. విలువ ..') setSetting;
ముగింపు

SetSetting ఫంక్షన్ పట్టికలో సేవ్ చేసిన ఏ మునుపటి సెట్టింగ్లను తొలగిస్తుంది మరియు మా క్రొత్త విలువను ఇన్సర్ట్ చేస్తుంది. ఇది పూర్ణాంకాల మరియు తీగలను రెండింటితో పని చేస్తాయి, కానీ స్ట్రింగ్ను సేవ్ చేస్తే, విలువ చుట్టూ సింగిల్ కోట్స్ అవసరం, కనుక మనం పని కోసం అదనపు బిట్ చేయడానికి సెట్సెట్టింగ్ ఫంక్షన్ని ఉపయోగిస్తాము.

దశ మూడు: డేటాబేస్ నుండి అమర్పులను లోడ్ చేస్తోంది

ఫంక్షన్ getSetting (పేరు)

స్థానిక sql = "సెట్లు * FROM సెట్టింగులు WHERE పేరు = '" .. పేరు .. "';
స్థానిక విలువ = -1;

db లో వరుస కోసం: nrows (sql) చేయండి
విలువ = row.value;
ముగింపు

తిరిగి విలువ;
ముగింపు

ఫంక్షన్ getSettingString (పేరు)
స్థానిక sql = "సెట్లు * FROM సెట్టింగులు WHERE పేరు = '" .. పేరు .. "';
స్థానిక విలువ = '';

db లో వరుస కోసం: nrows (sql) చేయండి
విలువ = row.value;
ముగింపు

తిరిగి విలువ;
ముగింపు

పైన చెప్పిన విధంగా, మేము విధులను రెండు వెర్షన్లుగా విచ్ఛిన్నం చేసాము: పూర్ణాంకాలకు ఒకటి మరియు తీగలకు ఒకటి. మనము చేసిన ఈ ప్రధాన కారణం డేటాబేస్ లో ఎటువంటి అమరిక లేనట్లయితే వాటిని మనము నిర్దిష్ట విలువలతో ప్రారంభించవచ్చు. GetSetting ఫంక్షన్ -1 ను తిరిగి ఇస్తుంది, ఇది సెట్టింగు సేవ్ చేయబడలేదని మాకు తెలియజేస్తుంది. GetSettingString ఖాళీ స్ట్రింగ్ను తిరిగి ఇస్తుంది.

GetSettingString ఫంక్షన్ పూర్తిగా ఐచ్ఛికం. ఇది మరియు సాధారణ getSetting ఫంక్షన్ మధ్య తేడా మాత్రమే డేటాబేస్ లో ఏమీ కనుగొనబడలేదు తిరిగి ఉంది.

దశ నాలుగు: మా సెట్టింగులను పట్టిక ఉపయోగించి

ఇప్పుడు మేము కృషి చేసాము, మనము ఒక స్థానికీకరించిన డాటాబేస్కు సులభంగా లోడ్ చేసి, సెట్టింగులను సేవ్ చేయవచ్చు. ఉదాహరణకు, మేము క్రింది ప్రకటనతో ధ్వనిని మ్యూట్ చేయగలము:

setSetting ( 'ధ్వని', తప్పుడు);

మరియు శబ్దాలు వినిపించే ప్రపంచ కార్యాచరణలో మేము సెట్టింగ్ను ఉపయోగించుకోగలము:

ఫంక్షన్ ప్లేసౌండ్ (సౌండ్ఐడి)
ఉంటే (getSetting ('ధ్వని'))
ఆడియో ప్లే (సౌండ్ ఐడి)
ముగింపు
ముగింపు

తిరిగి ధ్వనిని మార్చడానికి, మేము ధ్వని సెట్టింగును నిజంగా సెట్ చేసాము:

setSetting ( 'ధ్వని', నిజమైన);

ఈ విధులు గురించి nice భాగం మీరు తీగలు లేదా పూర్ణాంకాల సేవ్ చేయవచ్చు సెట్టింగులను పట్టిక మరియు వాటిని సులభంగా తిరిగి. ఇది వారి అధిక స్కోర్ను సేవ్ చేయడానికి ఆటగాడి పేరును సేవ్ చేయడంలో మీకు అనుమతిస్తుంది.

కరోనా SDK: ఎలా గ్రాఫిక్స్ లేయర్, గ్రాఫిక్స్ తరలించు మరియు ఫ్రంట్ గ్రాఫిక్స్ తీసుకురండి