Cách tải và lưu dữ liệu trò chơi trong Corona SDK

Làm thế nào để sử dụng SQLite để lưu trữ dữ liệu và cài đặt trò chơi

Một điều hầu như mọi ứng dụng và trò chơi đều có điểm chung là cần lưu trữ và truy xuất dữ liệu. Ngay cả trò chơi đơn giản nhất cũng có thể sử dụng SQLite để lưu số phiên bản ứng dụng, có thể được sử dụng để đảm bảo khả năng tương thích khi thực hiện nâng cấp hoặc cài đặt đơn giản như bật hoặc tắt âm thanh của trò chơi.

Nếu bạn chưa bao giờ làm nhiều việc với cơ sở dữ liệu hoặc sử dụng các tính năng cơ sở dữ liệu trong Corona SDK , đừng lo lắng. Nó thực sự là một quá trình tương đối đơn giản nhờ vào sức mạnh của LUA và cơ sở dữ liệu SQLite được sử dụng trong Corona SDK. Hướng dẫn này sẽ đi qua quá trình tạo bảng cài đặt và cả lưu trữ và truy xuất thông tin từ nó. Cách phát triển ứng dụng iPad.

Đồng thời, hãy nhớ rằng kỹ thuật này có thể vượt quá khả năng lưu trữ cài đặt dựa trên người dùng. Ví dụ, nếu bạn có một trò chơi có thể chơi bằng các chế độ chơi khác nhau như chế độ "câu chuyện" và chế độ "arcade". Bảng cài đặt này có thể được sử dụng để lưu trữ chế độ hiện tại. Hoặc bất kỳ phần dữ liệu nào khác mà bạn muốn duy trì liên tục ngay cả khi người dùng thoát khỏi trò chơi và khởi chạy lại.

Bước Một: Khởi tạo cơ sở dữ liệu và tạo bảng cài đặt

Điều đầu tiên chúng ta cần làm là khai báo thư viện SQLite và cho ứng dụng của chúng ta biết nơi tìm tệp cơ sở dữ liệu. Nơi tốt nhất để đặt mã này là đúng ở đầu tệp main.lua cùng với các câu lệnh yêu cầu khác. File cơ sở dữ liệu sẽ được tạo nếu không tìm thấy, và chúng ta sẽ lưu nó trong thư mục Documents để chúng ta có thể đọc từ đó và ghi vào nó.

yêu cầu "sqlite3"
local data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Lưu ý cách biến "db" không được bản địa hóa. Chúng tôi đã thực hiện điều này để đảm bảo rằng chúng tôi có thể truy cập cơ sở dữ liệu trong suốt dự án của mình. Bạn cũng có thể tạo một tệp .lua cụ thể cho tất cả các hàm cơ sở dữ liệu và giữ cơ sở dữ liệu được bản địa hóa cho tệp đó.

Tiếp theo, chúng ta cần tạo bảng cơ sở dữ liệu để lưu các thiết lập của chúng ta:

sql địa phương = "TẠO BẢNG NẾU KHÔNG tồn tại các thiết lập (tên, giá trị);"
db: exec (sql);

Câu lệnh này tạo bảng cài đặt của chúng tôi. Bạn có thể chạy nó mỗi khi ứng dụng tải vì nếu bảng đã tồn tại, câu lệnh này sẽ không làm gì cả. Bạn có thể đặt câu lệnh này ngay dưới nơi chúng tôi đã khai báo cơ sở dữ liệu hoặc trong hàm thiết lập ứng dụng của bạn để chạy. Yêu cầu chính là (1) để thực thi các câu lệnh đó mỗi khi ứng dụng được khởi chạy và (2) thực thi nó trước khi có bất kỳ cuộc gọi nào để tải hoặc lưu cài đặt.

Bước Hai: Lưu cài đặt vào cơ sở dữ liệu

function setSetting (tên, giá trị)
sql = "DELETE FROM settings WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "Giá trị cài đặt INSERT INTO (tên, giá trị) ('" ..name .. "'," .. value .. ");";
db: exec (sql)
kết thúc

function setSettingString (tên, giá trị)
setSetting (tên, "'" .. giá trị .. "'");
kết thúc

Hàm setSetting xóa mọi cài đặt trước đó được lưu vào bảng và chèn giá trị mới của chúng tôi. Nó sẽ làm việc với cả hai số nguyên và chuỗi, nhưng việc lưu một chuỗi yêu cầu dấu nháy đơn xung quanh giá trị, vì vậy chúng tôi đã sử dụng hàm setSettingString để làm điều đó thêm một chút công việc cho chúng ta.

Bước ba: Tải cài đặt từ cơ sở dữ liệu

function getSetting (tên)

địa phương sql = "SELECT * FROM cài đặt WHERE name = '" .. name .. "'";
giá trị cục bộ = -1;

cho hàng trong db: nrows (sql) do
value = row.value;
kết thúc

giá trị trả lại;
kết thúc

function getSettingString (tên)
địa phương sql = "SELECT * FROM cài đặt WHERE name = '" .. name .. "'";
giá trị cục bộ = '';

cho hàng trong db: nrows (sql) do
value = row.value;
kết thúc

giá trị trả lại;
kết thúc

Như trên, chúng tôi đã chia các chức năng thành hai phiên bản: một cho các số nguyên và một cho chuỗi. Lý do chính mà chúng tôi đã thực hiện điều này là để chúng tôi có thể khởi tạo chúng với các giá trị cụ thể nếu không có cài đặt nào tồn tại trong cơ sở dữ liệu. Hàm getSetting sẽ trả về -1, điều này sẽ cho chúng tôi biết rằng cài đặt chưa được lưu. GetSettingString sẽ trả về một chuỗi trống.

Hàm getSettingString hoàn toàn không bắt buộc. Sự khác biệt duy nhất giữa nó và hàm getSetting bình thường là những gì được trả về nếu không có gì được tìm thấy trong cơ sở dữ liệu.

Bước 4: Sử dụng bảng cài đặt của chúng tôi

Bây giờ chúng tôi đã thực hiện công việc khó khăn, chúng tôi có thể dễ dàng tải và lưu cài đặt vào cơ sở dữ liệu được bản địa hóa. Ví dụ: chúng tôi có thể tắt âm thanh bằng tuyên bố sau:

setSetting ('âm thanh', sai);

Và chúng ta có thể sử dụng các thiết lập trong một chức năng toàn cầu để chơi âm thanh:

function playSound (soundID)
if (getSetting ('sound')) thì
audio.play (soundID)
kết thúc
kết thúc

Để bật âm thanh trở lại, chúng tôi chỉ cần đặt cài đặt âm thanh thành true:

setSetting ('âm thanh', đúng);

Phần tốt đẹp về các chức năng này là bạn có thể lưu chuỗi hoặc số nguyên vào bảng cài đặt và truy xuất chúng một cách dễ dàng. Điều này cho phép bạn làm bất cứ điều gì từ tiết kiệm tên của một cầu thủ để tiết kiệm điểm số cao của họ.

Corona SDK: Làm thế nào để lớp đồ họa, di chuyển đồ họa và mang đồ họa để trước