글 작성자: Doublsb

저번 시간에는 타이틀 화면 없이 게임을 바로 시작해 보았다.


이번 시간에는 스크립트를 조금 손봐서, 게임 도중 진행상황에 따라 타이틀 이미지를 바꿀 수 있도록 해 보자.




타이틀 이미지를 바꾸려면 먼저 어떻게 이미지가 불러와지는지를 알아야 한다.

타이틀 배경화면 표시를 관리하는, Scene_Title의 create_background 메소드를 살펴보자.


 

def create_background

    @sprite1 = Sprite.new    : sprite1이라는 이름의 새로운 스프라이트를 만든다.

    @sprite1.bitmap = Cache.title1($data_system.title1_name)    : sprite1에 지정해둔 경로의 그림을 불러온다.

    @sprite2 = Sprite.new    : sprite2라는 이름의 새로운 스프라이트를 만든다.

    @sprite2.bitmap = Cache.title2($data_system.title2_name)    : sprite2에 지정해둔 경로의 그림을 불러온다.

    center_sprite(@sprite1)    : 가운데에 sprite1의 그림을 놓는다.

    center_sprite(@sprite2)    : 가운데에 sprite2의 그림을 놓는다.

  end 



이와 같이 되어있는 메소드에서, 이미지를 불러오는 구문은 무엇일까?

바로 @sprite1.bitmap = Cache.title1($data_system.title1_name)이다.


@sprite1.bitmap = 뒤에는 어떤 파일을 불러올 것인지 쓰게 되어 있다. 

기본 스크립트에서 Cache.title1($data_system.title1_name)라고 쓴 이유는, Cache가 파일의 경로를 관리하기 때문이다.


그렇다면 Cache 스크립트가 title1을 어떻게 불러오는지 보도록 하자.


 

def self.title1(filename)

    load_bitmap("Graphics/Titles1/", filename)

end



Cache는 title1을 Graphics/Titles1 폴더에서 불러온다. 이 때 filename은 파일의 이름을 의미한다.

우리가 만약 title1을 직접 불러오고 싶다면, Cache.title1(filename)의 괄호 안쪽만 수정하면 되는 것이다.


그럼 직접 스크립트로 사진을 불러와 보자.



다음과 같이 게임 Titles1 폴더에 Book.png와 Castle.png 파일을 집어넣었다.

괄호 안에 Book.png라고 써 넣는다면 우리가 데이터베이스에서 지정한 타이틀이 아닌, Book 파일을 배경화면으로 쓰게 될 것이다.



 

def create_background

    @sprite1 = Sprite.new

    @sprite1.bitmap = Cache.title1("Book.png")

    @sprite2 = Sprite.new

    @sprite2.bitmap = Cache.title2($data_system.title2_name)

    center_sprite(@sprite1)

    center_sprite(@sprite2)

  end 




스크립트를 수정하고 나니 타이틀 배경화면이 Book.png로 바뀌어 버렸다.




자, 타이틀 그림을 수정하는 법을 알았으니 반은 온 것이다.

우리가 넣고 싶은 건 게임 도중 무언가를 선택했더니, 타이틀 화면이 바뀌어버리는 상황이다.

그럼 게임 도중 무언가를 선택하는 장면을 넣어 보자.



다음과 같이 말을 걸면 타이틀을 바꿀 것인지 묻고, 네라고 답하면 타이틀 그림이 바뀌게 해 뒀다.

여기서 중요한 부분은 바로, Script: $titlechange = 1이다.


이벤트를 만들 때 마지막 장의 Script 버튼을 선택하면 메모장 같은 빈 화면에 글씨를 쓸 수 있게 되어 있다.

그 화면에 우리는 $titlechange = 1을 입력한다.


이 문장이 어떤 의미냐 하면, titlechange라는 변수를 만들고 그 값을 1로 바꾼 것이다.

게임 내의 변수 조작과는 다르게, 스크립트로 새로운 변수를 쓰고 값을 변경하면 게임을 종료하지 않는 이상 변수는 값을 기억하고 있다.


이 값을 기억한 채로 F12를 눌러 타이틀 화면으로 돌아가면 타이틀 배경화면이 바뀌게끔 만들어줄 수 있다.



 

def create_background

    @sprite1 = Sprite.new

    @sprite1.bitmap = Cache.title1($data_system.title1_name)

    if ($titlechange == 1)

       @sprite1.bitmap = Cache.title1("Castle.png")

    end

    @sprite2 = Sprite.new

    @sprite2.bitmap = Cache.title2($data_system.title2_name)

    center_sprite(@sprite1)

    center_sprite(@sprite2)

  end 



create_background 메소드에서, title1의 이미지를 출력하는 부분 아래에 다음과 같은 새로운 스크립트를 추가했다.


if ($titlechange == 1)

       @sprite1.bitmap = Cache.title1("Castle.png")

end


이는 $titlechange라는 변수가 1값인 경우, 타이틀 그림을 Castle.png로 바꾼다는 의미이다.


모든 작업을 끝냈으니 한번 이렇게 해 둔 채로 실행시켜 보겠다.



훌륭하게 성공했다.






요약


1. 이벤트에서 스크립트 버튼을 누르고 $titlechange = 1이라고 써 넣는다.


2. 스크립트 에디터를 키고 Scene_Title 스크립트를 불러온다.

create_background 메소드를 다음과 같이 수정한다.


 

def create_background

    @sprite1 = Sprite.new

    @sprite1.bitmap = Cache.title1($data_system.title1_name)

    if ($titlechange == 1)

       @sprite1.bitmap = Cache.title1("불러올 타이틀 파일 이름")

    end

    @sprite2 = Sprite.new

    @sprite2.bitmap = Cache.title2($data_system.title2_name)

    center_sprite(@sprite1)

    center_sprite(@sprite2)

  end 



반응형