게임을 저장하고로드하는 방법에 관한 질문이 있습니다. 이 예에서는 Temple Run처럼 게임이 모든 것 (기록, 돈, 잠금 해제 된 아이템)에 자동으로 게임을 저장하는 것처럼 보입니다. PlayStation 1 게임과 비교하여 예를 들어 Abe의 Exodus을 예로 들어 보겠습니다. 자동 저장 /로드 기능은 없지만 아베가 남긴 게임 레벨의 정확한 위치에 게임을 저장할 수 있습니다. 게임을로드하면이 레벨 내에 남아있는 마지막 위치에서 자동으로 게임이 시작됩니다.Android 게임에서 자동 저장 및 자동로드 게임 개념과 내부 대에서 저장. 외장 (A.K.A. SD 카드)
- :
지금, 자동 부하의이 기능을 테스트하고 나는이 만든이 간단한 응용 프로그램에 의해 게임을 저장하기 위해 노력하고있어, 여기에 내가 다음과 같은 성공을 기대 한 순서입니다 앱을 처음으로 열면이 앱이 새로운 앱인 경우 기본적으로 움직일 수있는 스프라이트가 가운데에서 시작됩니다.
- 다음으로, 나는 장치를 기울여서 스프라이트를 움직이려고 시도하고 맨 위로 놓지 않았다.
- 그런 다음 BACK 키를 사용하고 앱을 닫을 때 홈 키를 사용하여 처리를 마쳐야합니다.
- 마지막으로 앱을 다시 열면 스프라이트에 배치 한 좌표가 새로운 시작점이됩니다.
내 프로그램에 버그가 있습니다. 위에 스프라이트 대신에이 좌표를 저장해야하는이 위치는 스프라이트가 다시 열리면 중심으로 돌아갑니다! 나는 Preferencesrender() 메서드를 코드 작업 공간에 직접 입력하여 게임 저장 기능을 테스트했지만 값을 읽는 것만으로 혼란스럽게 보였습니다. 이 게임을 저장 LibGDX에서 Java 용 SQL 라이트을 사용하는 것이 좋습니다
- 인가 :
다음은이 위의 주제에 대한 나의 몇 가지 질문입니까? 하여 삼성 갤럭시 SIII 같은
- 안드로이드 스마트 폰은 SD 카드 슬롯이 아니라 구글 넥서스 태블릿 및 주요 문제에 : 정말 안드로이드 태블릿에 외장 드라이브가? 게임을 코딩하지 않고 내부에 저장할 수 있습니까?
- 환경 설정을 사용하여 모든 항목 (예 : 문자, 레코드, 항목, 설정, 레벨 등)을 자동으로 저장하고 앱을 닫은 후 다시 열 경우에만 자동으로로드됩니다.
희망을 보내 주시면 감사하겠습니다.
Save_Load_Test.java
package com.test.save_and_load_test;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.utils.GdxRuntimeException;
public class Save_and_Load_Test implements Screen
{
private OrthographicCamera camera;
private Texture texture;
private Texture background;
private SpriteBatch batch;
private Rectangle pos;
private Rectangle BG_pos;
private float w = 720;
private float h = 1280;
Start game;
public Save_and_Load_Test(Start game)
{
this.game = game;
}
@Override
public void render(float delta)
{
// TODO render()
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(background, BG_pos.x, BG_pos.y);
batch.draw(texture, pos.x, pos.y);
batch.end();
if(Gdx.input.getAccelerometerX() >= 1 && pos.x >= 0)
{
pos.x -= 20;
}
if(Gdx.input.getAccelerometerX() <= -1 && pos.x <= (720 - pos.width))
{
pos.x += 20;
}
if(Gdx.input.getAccelerometerY() >= 1 && pos.y >=0)
{
pos.y -= 20;
}
if(Gdx.input.getAccelerometerY() <= -1 && pos.y <= (1280 - pos.height))
{
pos.y += 20;
}
if(Gdx.input.isKeyPressed(Keys.RIGHT) && pos.x <= (720 - pos.width - 35))
{
pos.x += 20;
}
if(Gdx.input.isKeyPressed(Keys.LEFT) && pos.x >=0)
{
pos.x -= 20;
}
if(Gdx.input.isKeyPressed(Keys.UP) && pos.y <= (1280 - pos.height - 35))
{
pos.y += 20;
}
if(Gdx.input.isKeyPressed(Keys.DOWN) && pos.y >= 0)
{
pos.y -= 20;
}
Preferences prefs = Gdx.app.getPreferences("my-preferences");
prefs.putFloat("X", pos.x);
prefs.putFloat("Y", pos.y);
prefs.flush();
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void show()
{
// TODO show()
camera = new OrthographicCamera();
camera.setToOrtho(false, w, h);
texture = new Texture(Gdx.files.internal("Jeff_the_Happy_Clown.png"));
background = new Texture(Gdx.files.internal("babe_BG.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
background.setFilter(TextureFilter.Linear, TextureFilter.Linear);
batch = new SpriteBatch();
pos = new Rectangle();
pos.width = 100;
pos.height = 100;
pos.x = (w/2) - (pos.width/2);
pos.y = (h/2) - (pos.height/2);
BG_pos = new Rectangle();
BG_pos.width = background.getWidth();
BG_pos.height = background.getHeight();
BG_pos.x = (w/2) - (BG_pos.width/2);
BG_pos.y = (h/2) - (BG_pos.height/2);
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose()
{
// TODO dispose
batch.dispose();
texture.dispose();
}
}
시작 :
여기 내 코드입니다.자바
package com.test.save_and_load_test;
import com.badlogic.gdx.Game;
public class Start extends Game
{
@Override
public void create()
{
setScreen(new Save_and_Load_Test(this));
}
@Override
public void resume()
{
// Is this method involved for loading the last file game saved?
}
}
두 Java 클래스를 분석하는 데 2 시간이 걸리면 render() 메서드를 살펴보고 마지막 줄에 환경 설정 코드를 넣으십시오. resume()의 재정의를 사용하기 때문에 "Start.java"를 확인하십시오. 그러면 마지막으로 저장된 파일이 자동으로로드됩니다. –
제발, 도와주세요! (T_T) –