class Scene_Map def transfer_player begin loading_page # 清除主角场所移动调试标志 $game_temp.player_transferring = false # 移动目标与现在的地图有差异的情况下 if $game_map.map_id != $game_temp.player_new_map_id RPG::Cache.clear if !Config.cache? # 设置新地图 $game_map.setup($game_temp.player_new_map_id) end # 刷新地图 (执行并行事件) $game_map.update # 执行地图设置的 BGM、BGS 的自动切换 $game_map.autoplay # 设置主角位置 $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y) # 设置主角朝向 case $game_temp.player_new_direction when 2 # 下 $game_player.turn_down when 4 # 左 $game_player.turn_left when 6 # 右 $game_player.turn_right when 8 # 上 $game_player.turn_up end # 矫正主角姿势 $game_player.straighten loading_page_step(2) @spriteset.dispose @spriteset = Spriteset_Map.new #########这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!######################################################################### loading_page_step(3) @arpg.dispose @arpg = ARPG.new # 釋放記憶體 #if Config.cache? && @esc_timeout == 0 GC.start #end $refresh["enemy_states"] = false # 处理过渡中的情况下 if $game_temp.transition_processing # 清除过渡处理中标志 $game_temp.transition_processing = false # 执行过渡 Graphics.transition(10) end loading_disable Kboard.clear_buffer if Config.clear_key_buffer? # 在生成活动块 #@spriteset = Spriteset_Map.new #@arpg = ARPG.new # 设置画面 #Graphics.frame_reset # 刷新输入信息 #Input.update rescue;p "3",$!,$@;end end end
class Scene_Map
def transfer_player
begin
loading_page
# 清除主角场所移动调试标志
$game_temp.player_transferring = false
# 移动目标与现在的地图有差异的情况下
if $game_map.map_id != $game_temp.player_new_map_id
RPG::Cache.clear if !Config.cache?
# 设置新地图
$game_map.setup($game_temp.player_new_map_id)
end
# 刷新地图 (执行并行事件)
$game_map.update
# 执行地图设置的 BGM、BGS 的自动切换
$game_map.autoplay
# 设置主角位置
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
# 设置主角朝向
case $game_temp.player_new_direction
when 2 # 下
$game_player.turn_down
when 4 # 左
$game_player.turn_left
when 6 # 右
$game_player.turn_right
when 8 # 上
$game_player.turn_up
end
# 矫正主角姿势
$game_player.straighten
loading_page_step(2)
@spriteset.dispose
@spriteset = Spriteset_Map.new #########这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!#########################################################################
loading_page_step(3)
@arpg.dispose
@arpg = ARPG.new
# 釋放記憶體
#if Config.cache? && @esc_timeout == 0
GC.start
#end
$refresh["enemy_states"] = false
# 处理过渡中的情况下
if $game_temp.transition_processing
# 清除过渡处理中标志
$game_temp.transition_processing = false
# 执行过渡
Graphics.transition(10)
end
loading_disable
Kboard.clear_buffer if Config.clear_key_buffer?
# 在生成活动块
#@spriteset = Spriteset_Map.new
#@arpg = ARPG.new
# 设置画面
#Graphics.frame_reset
# 刷新输入信息
#Input.update
rescue;p "3",$!,$@;end
end
end
不能,这东西随机性太强了,有时候你等半天都没事,有时冷不丁的给你崩溃一次。
然后我把每行代码后面都写了一句LOG输出日志的代码,在偶然一次崩溃后,根据日志文件终于定位出了产生崩溃的代码行。
@spriteset = Spriteset_Map.new
但是这个类好像是封装在系统内部的?我查到这里,技术有限就查不下去了。 |