스크립트는 다룰줄 모르니 그냥 여기 저기 빼고 붙이면서 만든 스크립트입니다.
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
이것으로 끝.
근데 이렇게 하면 별 문제가 안일어날까 싶네요.
덧붙여 세이브, 로드를 하려면 어떤 구분을 이벤트 커맨드에 입력해야하나 싶네요.
세이브는 세이브 화면 로드 하면 될 것 같은데 로드는?
실행해보시면 에러납니다.
수정하신 코드를 보면 foreground, background를 초기화하는 create_foreground, create_background를 생략하셨네요. Scene_Title클래스 해제시 실행되는terminate함수에 foreground, background에 만들어둔 스프라이트 객체를 해제하는 코드가 들어있기 때문에 nil에러가 납니다.
타이틀 화면이 잠깐 비쳐도 상관없다면 크게 손댈 것 없이 몇라인만 추가하면 되지만 타이틀화면 자체가 나오지 않고 바로 게임 플레이를 시작하고 싶다면 Scene_Title를 꽤 많이 손봐야 하네요.
그리고 스크립트 수정시 꽤 중요한 사항인데요.
기존 스크립트를 직접 수정하지 마시고 제일 하단의 main 바로 앞부분에서 재정의해주는 편이 이후의 수정이나 확장이 쉽습니다.