设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: kinray
打印 上一主题 下一主题

如何做到进入菜单自动更换bgm?

 关闭 [复制链接]

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
11
发表于 2008-6-15 19:20:46 | 只看该作者

  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  處理選單畫面的類別。
  5. #==============================================================================

  6. class Scene_Menu
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化物件
  9.   #     menu_index : 命令游標的初期位置
  10.   #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 主處理
  16.   #--------------------------------------------------------------------------
  17.   def main
  18.     # 產生命令視窗
  19.     $game_system.bgm_memorize
  20.     Audio.bgm_play("Audio/BGM/014-Theme03")
  21.     s1 = $data_system.words.item
  22.     s2 = $data_system.words.skill
  23.     s3 = $data_system.words.equip
  24.     s4 = "狀態"
  25.     s5 = "存檔"
  26.     s6 = "結束"
  27.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
  28.     @command_window.index = @menu_index
  29.     # 同伴人數為 0 的情況下
  30.     if $game_party.actors.size == 0
  31.       # 物品、技能、裝備、狀態無效化
  32.       @command_window.disable_item(0)
  33.       @command_window.disable_item(1)
  34.       @command_window.disable_item(2)
  35.       @command_window.disable_item(3)
  36.     end
  37.     # 禁止存檔的情況下
  38.     if $game_system.save_disabled
  39.       # 存檔無效
  40.       @command_window.disable_item(4)
  41.     end
  42.     # 產生遊戲時間視窗
  43.     @playtime_window = Window_PlayTime.new
  44.     @playtime_window.x = 0
  45.     @playtime_window.y = 224
  46.     # 產生步數視窗
  47.     @steps_window = Window_Steps.new
  48.     @steps_window.x = 0
  49.     @steps_window.y = 320
  50.     # 產生金錢視窗
  51.     @gold_window = Window_Gold.new
  52.     @gold_window.x = 0
  53.     @gold_window.y = 416
  54.     # 產生狀態視窗
  55.     @status_window = Window_MenuStatus.new
  56.     @status_window.x = 160
  57.     @status_window.y = 0
  58.     # 執行過渡
  59.     Graphics.transition
  60.     # 主循環
  61.     loop do
  62.       # 更新遊戲畫面
  63.       Graphics.update
  64.       # 更新輸入訊息
  65.       Input.update
  66.       # 更新畫面
  67.       update
  68.       # 如果切換畫面就中斷循環
  69.       if $scene != self
  70.         break
  71.       end
  72.     end
  73.     # 準備過渡
  74.     Graphics.freeze
  75.     # 釋放視窗
  76.     @command_window.dispose
  77.     @playtime_window.dispose
  78.     @steps_window.dispose
  79.     @gold_window.dispose
  80.     @status_window.dispose
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 更新畫面
  84.   #--------------------------------------------------------------------------
  85.   def update
  86.     # 更新視窗
  87.     @command_window.update
  88.     @playtime_window.update
  89.     @steps_window.update
  90.     @gold_window.update
  91.     @status_window.update
  92.     # 命令視窗被活化的情況下: 呼叫 update_command
  93.     if @command_window.active
  94.       update_command
  95.       return
  96.     end
  97.     # 狀態視窗被活化的情況下: 呼叫 update_status
  98.     if @status_window.active
  99.       update_status
  100.       return
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 更新畫面 (命令視窗被活化的情況下)
  105.   #--------------------------------------------------------------------------
  106.   def update_command
  107.     # 按下 B 鍵的情況下
  108.     if Input.trigger?(Input::B)
  109.       # 演奏取消 SE
  110.       $game_system.se_play($data_system.cancel_se)
  111.       # 切換的地圖畫面
  112.       $game_system.bgm_restore
  113.       $scene = Scene_Map.new
  114.       return
  115.     end
  116.     # 按下 C 鍵的情況下
  117.     if Input.trigger?(Input::C)
  118.       # 同伴人數為 0、存檔、遊戲結束以外的場合
  119.       if $game_party.actors.size == 0 and @command_window.index < 4
  120.         # 演奏凍結 SE
  121.         $game_system.se_play($data_system.buzzer_se)
  122.         return
  123.       end
  124.       # 命令視窗的游標位置分歧
  125.       case @command_window.index
  126.       when 0  # 物品
  127.         # 演奏確定 SE
  128.         $game_system.se_play($data_system.decision_se)
  129.         # 切換到物品畫面
  130.         $scene = Scene_Item.new
  131.       when 1  # 技能
  132.         # 演奏確定 SE
  133.         $game_system.se_play($data_system.decision_se)
  134.         # 活化狀態視窗
  135.         @command_window.active = false
  136.         @status_window.active = true
  137.         @status_window.index = 0
  138.       when 2  # 裝備
  139.         # 演奏確定 SE
  140.         $game_system.se_play($data_system.decision_se)
  141.         # 活化狀態視窗
  142.         @command_window.active = false
  143.         @status_window.active = true
  144.         @status_window.index = 0
  145.       when 3  # 狀態
  146.         # 演奏確定 SE
  147.         $game_system.se_play($data_system.decision_se)
  148.         # 活化狀態視窗
  149.         @command_window.active = false
  150.         @status_window.active = true
  151.         @status_window.index = 0
  152.       when 4  # 存檔
  153.         # 禁止存檔的情況下
  154.         if $game_system.save_disabled
  155.           # 演奏凍結 SE
  156.           $game_system.se_play($data_system.buzzer_se)
  157.           return
  158.         end
  159.         # 演奏確定 SE
  160.         $game_system.se_play($data_system.decision_se)
  161.         # 切換到存檔畫面
  162.         $scene = Scene_Save.new
  163.       when 5  # 遊戲結束
  164.         # 演奏確定 SE
  165.         $game_system.se_play($data_system.decision_se)
  166.         # 切換到遊戲結束畫面
  167.         $scene = Scene_End.new
  168.       end
  169.       return
  170.     end
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 更新畫面 (狀態視窗被活化的情況下)
  174.   #--------------------------------------------------------------------------
  175.   def update_status
  176.     # 按下 B 鍵的情況下
  177.     if Input.trigger?(Input::B)
  178.       # 演奏取消 SE
  179.       $game_system.se_play($data_system.cancel_se)
  180.       # 活化命令視窗
  181.       @command_window.active = true
  182.       @status_window.active = false
  183.       @status_window.index = -1
  184.       return
  185.     end
  186.     # 按下 C 鍵的情況下
  187.     if Input.trigger?(Input::C)
  188.       # 命令視窗的游標位置分歧
  189.       case @command_window.index
  190.       when 1  # 技能
  191.         # 這個角色的行動限制在 2 以上的情況下
  192.         if $game_party.actors[@status_window.index].restriction >= 2
  193.           # 演奏凍結 SE
  194.           $game_system.se_play($data_system.buzzer_se)
  195.           return
  196.         end
  197.         # 演奏確定 SE
  198.         $game_system.se_play($data_system.decision_se)
  199.         # 切換到技能畫面
  200.         $scene = Scene_Skill.new(@status_window.index)
  201.       when 2  # 裝備
  202.         # 演奏確定 SE
  203.         $game_system.se_play($data_system.decision_se)
  204.         # 切換到裝備畫面
  205.         $scene = Scene_Equip.new(@status_window.index)
  206.       when 3  # 狀態
  207.         # 演奏確定 SE
  208.         $game_system.se_play($data_system.decision_se)
  209.         # 切換到狀態畫面
  210.         $scene = Scene_Status.new(@status_window.index)
  211.       end
  212.       return
  213.     end
  214.   end
  215. end
复制代码

$game_system.bgm_restore
不小心放錯位置= =

以上才是正確的

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3133
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

12
发表于 2008-6-15 19:22:28 | 只看该作者
以下引用TERENCE于2008-6-15 11:17:09的发言:

我刚刚发现~~~~~我的改法MS也有小问题~~~~~
进入物品,技能等视窗后~~~~~会有问题

BGM会很自觉的消失?那就在下面的case里邪恶的做个标记,然后最后面加个if……(烦)
原来TERRENCE也像冰那样偷懒啦……囧
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
13
发表于 2008-6-15 19:26:36 | 只看该作者
以下引用IamI于2008-6-15 11:22:28的发言:


以下引用TERENCE于2008-6-15 11:17:09的发言:

我刚刚发现~~~~~我的改法MS也有小问题~~~~~
进入物品,技能等视窗后~~~~~会有问题


BGM会很自觉的消失?那就在下面的case里邪恶的做个标记,然后最后面加个if……(烦)

不用!!
在切换的地图画面
$scene = Scene_Map.new
前加上
$game_system.bgm_restore
即可


                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-8-5 22:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表