타이틀/게임오버

타이틀 화면 없이 게임을 시작하게 만드는법.

by 마에르드 posted Feb 11, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

스크립트는 다룰줄 모르니 그냥 여기 저기 빼고 붙이면서 만든 스크립트입니다.

 

Scene_Base 에 이것을 덮어씌웁니다.

#==============================================================================
# ■ Scene_Base
#------------------------------------------------------------------------------
#  게임중의 모든 씬의 슈퍼 클래스입니다.
#==============================================================================

class Scene_Base
  #--------------------------------------------------------------------------
  # ● 메인
  #--------------------------------------------------------------------------
  def main
    start
    post_start
    update until scene_changing?
    pre_terminate
    terminate
  end
  #--------------------------------------------------------------------------
  # ● 개시 처리
  #--------------------------------------------------------------------------
  def start
    create_main_viewport
  end
  #--------------------------------------------------------------------------
  # ● 개시 후처리
  #--------------------------------------------------------------------------
  def post_start
    perform_transition
    Input.update
  end
  #--------------------------------------------------------------------------
  # ● 씬 변경중 판정
  #--------------------------------------------------------------------------
  def scene_changing?
    SceneManager.scene != self
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    update_basic
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신(기본)
  #--------------------------------------------------------------------------
  def update_basic
    Graphics.update
    Input.update
    update_all_windows
  end
  #--------------------------------------------------------------------------
  # ● 종료 사전 처리
  #--------------------------------------------------------------------------
  def pre_terminate
  end
  #--------------------------------------------------------------------------
  # ● 종료 처리
  #--------------------------------------------------------------------------
  def terminate
    Graphics.freeze
    dispose_all_windows
  end
  #--------------------------------------------------------------------------
  # ● 트란지션 실행
  #--------------------------------------------------------------------------
  def perform_transition
    Graphics.transition(transition_speed)
  end
  #--------------------------------------------------------------------------
  # ● 트란지션 속도의 취득
  #--------------------------------------------------------------------------
  def transition_speed
    return 10
  end
  #--------------------------------------------------------------------------
  # ● 뷰포트의 작성
  #--------------------------------------------------------------------------
  def create_main_viewport
    @viewport = Viewport.new
    @viewport.z = 200
  end
  #--------------------------------------------------------------------------
  # ● 전윈도우의 갱신
  #--------------------------------------------------------------------------
  def update_all_windows
    instance_variables.each do |varname|
      ivar = instance_variable_get(varname)
      ivar.update if ivar.is_a?(Window)
    end
  end
  #--------------------------------------------------------------------------
  # ● 전윈도우의 해방
  #--------------------------------------------------------------------------
  def dispose_all_windows
    instance_variables.each do |varname|
      ivar = instance_variable_get(varname)
      ivar.dispose if ivar.is_a?(Window)
    end
  end
  #--------------------------------------------------------------------------
  # ● 호출원의 씬에 돌아온다
  #--------------------------------------------------------------------------
  def return_scene
    SceneManager.return
  end
  #--------------------------------------------------------------------------
  # ● 각종 사운드와 그래픽의 일괄 페이드아웃
  #--------------------------------------------------------------------------
  def fadeout_all(time = 1000)
    RPG::BGM.fade(time)
    RPG::BGS.fade(time)
    RPG::ME.fade(time)
    Graphics.fadeout(time * Graphics.frame_rate / 1000)
    RPG::BGM.stop
    RPG::BGS.stop
    RPG::ME.stop
  end
  #--------------------------------------------------------------------------
  # ● 게임 오버 판정
  #    파티가 전멸 상태라면 게임 오버 화면에 천이 한다.
  #--------------------------------------------------------------------------
  def check_gameover
    SceneManager.goto(Scene_Gameover) if $game_party.all_dead?
  end
end

Scene_Title 에 이것을 덮어씌웁니다.

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  타이틀 화면의 처리를 실시하는 클래스입니다.
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # ● 개시 처리
  #--------------------------------------------------------------------------
  def start
    DataManager.setup_new_game
    fadeout_all
    $game_map.autoplay
    SceneManager.goto(Scene_Map)
  end
end

 

이것으로 끝.

근데 이렇게 하면 별 문제가 안일어날까 싶네요.

 

덧붙여 세이브, 로드를 하려면 어떤 구분을 이벤트 커맨드에 입력해야하나 싶네요.

세이브는 세이브 화면 로드 하면 될 것 같은데 로드는?