דבר אחד כמעט כל משחק ומשחק יש במשותף הוא הצורך לאחסן ולאחזר נתונים. אפילו המשחק הפשוט ביותר יכול לנצל את SQLite כדי לשמור את מספר הגירסה של היישום, אשר ניתן להשתמש בהם כדי להבטיח תאימות בעת ביצוע שדרוגים, או הגדרות פשוטות כגון הפעלת צליל של המשחק או כבוי.
אם אתה אף פעם לא עשיתי הרבה עבודה עם מסדי נתונים או להשתמש במאגר הנתונים ב SDK קורונה, אל תדאג. זה למעשה תהליך פשוט יחסית הודות לכוח של LUA ואת מנוע מסד נתונים SQLite מנוצל SDK קורונה. הדרכה זו תלך בתהליך של יצירת טבלת הגדרות וגם אחסון ואחזור מידע ממנו.
זכור כי טכניקה זו יכולה ללכת מעבר לאחסון הגדרות מבוססות משתמש. לדוגמה, מה אם יש לך משחק שניתן לשחק באמצעות מצבי משחק שונים כגון מצב "סיפור" ו "ארקייד" מצב. טבלת הגדרות זו יכולה לשמש לשמירת המצב הנוכחי. כל פיסת נתונים אחרת שאתה רוצה להישאר מתמשכת גם אם המשתמש ייסגר מהמשחק ו relaunches אותו.
אתחול מסד הנתונים ויצירת טבלת ההגדרות.
הדבר הראשון שאנחנו צריכים לעשות הוא להכריז על ספריית SQLite ולספר App שלנו איפה למצוא את קובץ מסד הנתונים. המקום הטוב ביותר לשים את הקוד הזה הוא הנכון בחלק העליון של הקובץ main.lua יחד עם הצהרות דורשים אחרים. קובץ מסד הנתונים ייווצר אם לא נמצא, ואנו נשמור אותו בתיקיה 'מסמכים' כדי שנוכל לקרוא ממנו ולכתוב עליו.
דורשים "sqlite3" data_path מקומי = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
שימו לב איך המשתנה "db" אינו מקומי. עשינו זאת כדי לוודא שנוכל לגשת למסד הנתונים לאורך כל הפרוייקט שלנו. ניתן גם ליצור קובץ .lua ספציפי עבור כל הפונקציות במסד הנתונים ולשמור על מסד הנתונים המותאם לקובץ זה.
לאחר מכן, עלינו ליצור את טבלת מסד הנתונים שתשמור את ההגדרות שלנו:
Local sql = "צור טבלה אם לא מופיעים הגדרות (שם, ערך);" db: exec (sql);
הצהרה זו יוצרת את טבלת ההגדרות שלנו. זה בסדר להפעיל אותו בכל פעם היישום נטען כי אם הטבלה כבר קיימת, הצהרה זו לא תעשה שום דבר. תוכל להציב את ההצהרה הזו במקום שבו הכרזנו על מסד הנתונים או בפונקציה שמגדירה את האפליקציה שלך להפעלה. הדרישה העיקרית היא: (1) לבצע את ההצהרות הללו בכל פעם שהאפליקציה הושקה ו (2) לבצע אותה לפני כל שיחות לטעון או לשמור הגדרות.
שמירת הגדרות למסד הנתונים.
set set (שם, ערך) sql = "מחק מתוך הגדרות כאשר שם =" "שם .." "'; db: exec (sql) sql = "INSERT INTO settings (שם, ערך) VALUES (" "..name ..", ".. value .."); "; db: exec (sql) סוף
(שם, ערך) setSetting (שם, "" "..");
פונקציית ההגדרה מוחקת הגדרות קודמות שנשמרו בטבלה ומוסיפה את הערך החדש שלנו. זה יעבוד עם מספרים שלמים ומחרוזות, אבל שמירת מחרוזת דורשת ציטוטים בודדים סביב הערך, אז השתמשנו בפונקציה setSettingString לעשות את זה קצת עבודה עבורנו.
טוען הגדרות ממסד הנתונים.
פונקציה getSetting (שם)
Local sql = "בחר * מתוך ההגדרות כאשר שם =" "שם .." ";"; ערך מקומי = -1;
עבור שורה ב db: nrows (sql) לעשות ערך = row.value; ח
ערך החזרה;
הפונקציה getSettingString (שם) המקומי sql = "בחר * מתוך הגדרות איפה שם = '' .. שם .. ''; ערך מקומי = '';
עבור שורה ב db: nrows (sql) לעשות ערך = row.value; ח
ערך החזרה;
כאמור, שברנו את הפונקציות לשתי גרסאות: אחת עבור מספרים שלמים ואחת עבור מחרוזות. הסיבה העיקרית שעשינו את זה היא שאנחנו יכולים לאתחל אותם עם ערכים ספציפיים אם אין הגדרה במסד הנתונים. הפונקציה getSetting תחזיר -1, דבר שיודיע לנו שההגדרה לא נשמרה. ה- GetSettingString יחזיר מחרוזת ריקה.
הפונקציה getSettingString היא אופציונלית לחלוטין. ההבדל היחיד בינה לבין הפונקציה הרגילה getSetting הוא מה מוחזר אם שום דבר לא נמצא במסד הנתונים.
באמצעות טבלת ההגדרות שלנו.
עכשיו שיש לנו את העבודה הקשה, אנחנו יכולים בקלות לטעון ולשמור הגדרות למסד נתונים מקומי. לדוגמה, נוכל להשתיק את הצליל עם ההצהרה הבאה:
setSetting ('sound', false);
ואנו יכולים לנצל את ההגדרה בפונקציה גלובלית להשמעת צלילים:
הפונקציה playSound (soundID) אם (getSetting ('sound')) ואז end.play (soundID) endend
כדי להפעיל מחדש את הצליל, אנו פשוט מגדירים את הגדרת הצליל ל- true:
setSetting ('sound', true);
החלק היפה על פונקציות אלה הוא שאתה יכול לשמור מחרוזות או מספרים שלמים אל טבלת הגדרות לאחזר אותם בקלות. זה מאפשר לך לעשות כל דבר מ שמירת שם של שחקן כדי לשמור על הציון הגבוה שלהם.