글 작성자: Doublsb


전 시간 자료 : http://doublsb.tistory.com/54

직접적인 응용 강좌가 아니기 때문에 아방스에는 올리지 않았다. 저번 시간엔 타이틀 씬의 내용을 해부했다.


저번 시간에는 타이틀 씬이 어떻게 이루어져 있는지 해부해보았다. 그렇다면 이번 시간에는 응용을 해보도록 하자.

제작자들이 초보여도 건드리고 싶어 하는 부분이 바로 타이틀 선택지를 추가하고, 삭제하는 것이다.


여기 여러분의 고민과 아마도 비슷할 문제들을 보여 주겠다.



 

Q1. 저는 타이틀에서 이어하기 선택지를 아예 빼 버리고 싶어요!


Q2. 타이틀 선택지에 제작자의 이름을 넣고 싶어요!


Q3. 아예 크게 크레딧 선택지를 만들어서 다른 화면을 보여줬으면 좋겠어요!




이 문제 중 1번과 2번은 오늘 이 글 하나만으로 충분하다. 하지만 3번은?

3번은 아예 머나먼 영역이다. 타이틀만 건드리는 게 아닌, 다른 씬을 건드려버리는 거니까.

하지만 걱정은 말자. 3번도 언젠가는 할 수 있다. 일단 우리는 1번과 2번, 이 두 가지만 수행해보는 시간을 갖겠다.






저번 시간에 분명 Scene_Title을 해부했지만, 아쉽게도 선택지를 삭제하기 위해선 Window_TitleCommand 스크립트로 가야 한다.

Window_TitleCommand 스크립트의 Create Command List 부분을 살펴보자.



def make_command_list

    add_command(Vocab::new_game, :new_game)

    add_command(Vocab::continue, :continue, continue_enabled)

    add_command(Vocab::shutdown, :shutdown)

  end 



add_command(Vocab::new_game, :new_game)라는 문장이 어떻게 되어있는지 설명하겠다. add_command라는 메소드는,


add_command(선택지 이름, :연결할 이름)


으로 되어 있다.


만약 우리가 3개의 add_command 밑에 add_command("그냥만들어봄", :haha)이라고 다음과 같이 쓴다고 해 보자.




def make_command_list

    add_command(Vocab::new_game, :new_game)

    add_command(Vocab::continue, :continue, continue_enabled)

    add_command(Vocab::shutdown, :shutdown)

    add_command("그냥만들어봄", :haha)

  end 



이렇게 쓰면 타이틀에는 갑자기 종료하기 선택지 아래에 그냥만들어봄이라는 들어보지도 못한 선택지가 추가된다.

이 선택지는 끝도 없이 늘릴 수 있다. 다만 선택했을 때는 아무런 현상도 발생하지 않는다.


그럼 선택지를 추가해봤으니, 없앨 땐 어떻게 해야 할까?

간단하다. 그 부분을 지우면 된다. add_command(Vocab::continue, :continue, continue_enabled)라는 부분을 지워서 다음과 같이 만들면,




def make_command_list

    add_command(Vocab::new_game, :new_game)

    add_command(Vocab::shutdown, :shutdown)

  end 



아이고 맙소사. 이어하기가 갑자기 사라져버리는 현상을 볼 수 있을 것이다.

그럼 우리가 하기로 했던, 제작자 이름을 선택지에 만들어버리는 것도 가능할 것이다.



def make_command_list

    add_command(Vocab::new_game, :new_game)

    add_command(Vocab::continue, :continue, continue_enabled)

    add_command(Vocab::shutdown, :shutdown)

    add_command("제작자 쌍쌍뱌", :hmm)

  end 




자, 1번과 2번이 순식간에 해결되었다!





뭐라고? 나는 더 앞을 향하고 싶다고? 3번 문제를 해결하고 싶은 사람이 있다면 칭찬한다. 노력하는 자세는 아주 훌륭하다.

3번을 이 글에서 해결하지는 않을 것이나, 이번 시간에는 당신이 다음 시간에 더 많은 것을 할 수 있도록 밑작업을 해 보겠다.


당신이 이전 글을 읽고 이 글을 읽었다면 떠오르는 의문이 있을 지도 모른다.

"아니, Window_TitleCommand만 설정하면 되는데 왜 저번 시간엔 Scene_Title을 해부한 거야?"


이 글만 읽었다면 이런 생각을 할 수도 있다.

"Scene_Title에 create_command_window라는 부분이 있는데, 그럼 선택지를 만들고 삭제하는 거랑은 관련 없는 건가?"


그 의문을 지금 풀어보자.

윗 부분에서, add_command(선택지 이름, :연결할 이름)이었던 것을 기억하는가? 연결할 이름은 도통 어디에 쓰는건지 어리둥절했을 사람이 있었을 것이다.


Scene_Title에 있는 create_command_window 항목을 보자.


 

 def create_command_window

    @command_window = Window_TitleCommand.new

    @command_window.set_handler(:new_game, method(:command_new_game))

    @command_window.set_handler(:continue, method(:command_continue))

    @command_window.set_handler(:shutdown, method(:command_shutdown))

  end



:new_game... 어디서 많이 보지 않았나? :continue도 그렇고.

:연결할 이름의 구성과 일치하지 않는가? 한번 동일한 부분만 놓고 생각해 보자.


add_command(Vocab::new_game, :new_game)

@command_window.set_handler(:new_game, method(:command_new_game))


그렇다. 두 구문은 연결된다! new_game 선택지를 고르면, :new_game이라는 연결을 따라 command_new_game이라는 메소드가 수행된다.


그럼 우리가 만들수도 있겠다는 생각이 들지 않는가? 한번 직접 고쳐 보자.


Window_TitleCommand 스크립트


def make_command_list

    add_command(Vocab::new_game, :new_game)

    add_command(Vocab::continue, :continue, continue_enabled)

    add_command(Vocab::shutdown, :shutdown)

    add_command("누르면?", :press)

  end 



Scene_Title 스크립트

 

 def create_command_window

    @command_window = Window_TitleCommand.new

    @command_window.set_handler(:new_game, method(:command_new_game))

    @command_window.set_handler(:continue, method(:command_continue))

    @command_window.set_handler(:shutdown, method(:command_shutdown))

    @command_window.set_handler(:press, method(:dispose_background))

  end



자, '누르면?' 이라는 선택지를 추가해 놓고, 뒷배경은 사라지도록 하는 메소드를 연결시켜 두었다.

이제 게임을 실행시켜서 '누르면?' 선택지를 선택해 보자.


결과물은 보여주지 않겠다. 직접 해 보자.





오늘은 이렇게 타이틀 선택지를 추가하고, 삭제해 보았다.

더 배우려고 한 사람은 타이틀 선택지가 어떻게 돌아가는지 감을 잡을 수 있었을 것이다.


다음 시간에는 타이틀 씬을 아예 없애고 게임을 바로 시작할 수 있도록 해 보자.



반응형