코로나 SDK에 게임 데이터를로드하고 저장하는 방법

SQLite를 사용하여 게임 데이터 및 설정 저장 방법

거의 모든 앱과 게임에서 공통점이있는 한 가지는 데이터를 저장하고 검색해야한다는 것입니다. 가장 간단한 게임 일지라도 SQLite를 사용하여 앱 버전 번호를 저장할 수 있습니다. 앱 버전 번호는 업그레이드를 수행 할 때 호환성을 보장하거나 게임 소리 켜기 / 끄기와 같은 간단한 설정을 저장할 수 있습니다.

데이터베이스로 많은 일을 해본 적이 없거나 Corona SDK 의 데이터베이스 기능을 사용한 적이 있다면 걱정하지 마십시오. LUA와 Corona SDK에 사용 된 SQLite 데이터베이스 엔진의 성능 덕분에 실제로는 비교적 간단한 프로세스였습니다. 이 튜토리얼은 설정 테이블을 만들고 그 테이블에서 정보를 저장하고 검색하는 과정을 안내합니다. iPad 앱을 개발하는 방법.

또한이 기술은 사용자 기반 설정을 저장하는 것 이상의 의미를 가질 수 있습니다. 예를 들어, "스토리"모드 및 "아케이드"모드와 같은 다른 게임 모드를 사용하여 재생할 수있는 게임을 가지고 있다면 어떻게 될까요? 이 설정 테이블은 현재 모드를 저장하는 데 사용할 수 있습니다. 또는 사용자가 게임을 종료하고 다시 실행하더라도 영구적으로 유지하려는 다른 데이터 조각.

1 단계 : 데이터베이스 초기화 및 설정 테이블 만들기

우리가해야 할 첫 번째 일은 SQLite 라이브러리를 선언하고 응용 프로그램에 데이터베이스 파일을 찾을 위치를 알려주는 것입니다. 이 코드를 넣는 가장 좋은 장소는 다른 require 문과 함께 main.lua 파일의 맨 위에 있습니다. 아무 것도 발견되지 않으면 데이터베이스 파일이 생성되고 문서 폴더에서 해당 파일을 읽고 쓸 수 있습니다.

"sqlite3"이 필요합니다.
로컬 data_path = system.pathForFile ( "data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

"db"변수가 어떻게 현지화되지 않았는지 확인하십시오. 우리는 프로젝트 전반에 걸쳐 데이터베이스에 액세스 할 수 있도록하기 위해이 작업을 수행했습니다. 또한 모든 데이터베이스 기능에 대한 특정 .lua 파일을 작성하고 데이터베이스를 해당 파일에 대해 로컬화할 수 있습니다.

다음으로 설정을 저장할 데이터베이스 테이블을 만들어야합니다.

로컬 sql = "존재하지 않는 테이블 만들기 (이름, 값) 설정";
db : exec (sql);

이 문은 설정 테이블을 생성합니다. 테이블이 이미 존재하면이 명령문은 아무 것도하지 않기 때문에 앱이로드 될 때마다 실행해도됩니다. 이 선언문은 데이터베이스를 선언 한 위치 또는 앱을 실행하는 함수에서 실행할 수 있습니다. 주요 요구 사항은 (1) 앱이 실행될 때마다 해당 명령문을 실행하고 (2) 설정을로드하거나 저장하기 전에 호출을 실행해야합니다.

2 단계 : 설정을 데이터베이스에 저장

함수 setSetting (이름, 값)
sql = "DELETE FROM 설정 WHERE name = '".. name .. "'";
db : exec (sql)

sql = "INSERT INTO 설정 (이름, 값) VALUES ( '"..name .. "',".. value .. ");";
db : exec (sql)
종료

함수 setSettingString (name, value)
setSetting (name, " '".. value .. "'"));
종료

setSetting 함수는 테이블에 저장된 이전 설정을 삭제하고 새 값을 삽입합니다. 정수와 문자열 모두에서 작동하지만 문자열을 저장하면 값 주위에 작은 따옴표가 필요하므로 setSettingString 함수를 사용하여 우리를 위해 추가 작업을 수행했습니다.

3 단계 : 데이터베이스에서 설정로드

함수 getSetting (name)

로컬 sql = "선택 * FROM 설정 이름 = '".. 이름 .. "'";
국부 값 = -1;

db의 행에 대해 : nrows (sql) do
value = row.value;
종료

반환 값;
종료

함수 getSettingString (name)
로컬 sql = "선택 * FROM 설정 이름 = '".. 이름 .. "'";
지역 값 = '';

db의 행에 대해 : nrows (sql) do
value = row.value;
종료

반환 값;
종료

위와 같이 함수를 두 개의 버전으로 나누었습니다. 하나는 정수이고 다른 하나는 문자열입니다. 우리가 해본 주된 이유는 데이터베이스에 설정이 없으면 특정 값으로 초기화 할 수 있기 때문입니다. getSetting 함수는 -1이 반환되어 설정이 저장되지 않았다는 것을 알려줍니다. getSettingString은 빈 문자열을 반환합니다.

getSettingString 함수는 완전히 선택 사항입니다. 일반적인 getSetting 함수와 유일한 차이점은 데이터베이스에서 아무것도 발견되지 않으면 반환되는 값입니다.

4 단계 : 설정 테이블 사용

이제 우리는 열심히 작업 했으므로 로컬 데이터베이스에 설정을 쉽게로드하고 저장할 수 있습니다. 예를 들어 다음 문으로 사운드를 음소거 할 수 있습니다.

setSetting ( '소리', 거짓);

그리고 우리는 사운드를 재생하는 전역 함수에서 설정을 활용할 수 있습니다.

function playSound (soundID)
if (getSetting ( 'sound')) 그런 다음
audio.play (soundID)
종료
종료

사운드를 다시 켜려면 단순히 사운드 설정을 true로 설정하면됩니다.

setSetting ( '사운드', true);

이 함수들에 대한 좋은 점은 문자열이나 정수를 설정 테이블에 저장하고 쉽게 검색 할 수 있다는 것입니다. 이렇게하면 플레이어의 이름을 저장하는 것부터 높은 점수를 저장하는 것까지 할 수 있습니다.

코로나 SDK : 그래픽 레이어, 그래픽 이동 및 그래픽 가져 오기