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

Project1

 找回密码
 注册会员
搜索
查看: 2096|回复: 7
打印 上一主题 下一主题

[已经解决] 如何储存和播放音乐?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
90 小时
注册时间
2015-3-2
帖子
46
跳转到指定楼层
1
发表于 2015-6-7 18:08:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
受到一个va脚本的启发,自己像模仿一个音乐鉴赏的场景,可是,如何储存和播放音乐呢?我试着利用战斗前储存地图的bgm,然后播放战斗音乐,战斗结束后再播放原本储存的地图的bgm的原理,可是切换回场景就被刷掉了,然后就没有bgm了。请问一下怎么样避免在场景更换的时候刷掉或者是其他同样的方法?
人因为有难忘的记忆而变得坚强,这就是所谓的成长吧!

Lv4.逐梦者

送快递的水表员

梦石
10
星屑
4792
在线时间
3303 小时
注册时间
2012-6-27
帖子
7160

开拓者贵宾

2
发表于 2015-6-16 20:44:53 | 只看该作者
a = RPG::BGM.last
然后最后播放的BGM就被储存到a里了

a.play
就继续播放储存到a里的BGM了

点评

不应该吧,放的位置不对?  发表于 2015-6-16 21:47
我就用的这个,会被刷掉的啦。  发表于 2015-6-16 21:25
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
478
在线时间
750 小时
注册时间
2012-11-10
帖子
924
3
发表于 2015-6-16 21:03:47 | 只看该作者
别的游戏里被刷掉才是正常的吧,鉴赏模式就是让你乖乖别动听音乐的

点评

LZ的意思大概应该是在游戏过程中可以听音乐,但再切回正常游戏场景的时候原有的BGM被刷掉了  发表于 2015-6-16 21:24
有本事就来阻止我啊,主体单元『天照』!
回复 支持 反对

使用道具 举报

Lv2.观梦者

永无止境的旅程

梦石
0
星屑
503
在线时间
1552 小时
注册时间
2012-6-19
帖子
1226

开拓者贵宾

4
发表于 2015-6-18 23:00:03 | 只看该作者
嘘,小声点,我一般是不会告诉别人的。
  1. =begin
  2.       ★戦闘前後BGM継続★

  3.       戦闘曲にBGMではなく、BGSを使用し、
  4.       バックグラウンドにマップBGMを音量0で流し続けることで、
  5.       戦闘後、マップ上のBGMを途切れさせずに、再開させることができます。
  6.       
  7.       また、指定スイッチをONにしている場合、戦闘BGMを演奏せず、
  8.       マップBGMを戦闘に持ち越すことができます。
  9.       
  10.       ● 仕様 ●==========================================================
  11.       BGSの機能を使って、戦闘曲を演奏しますが、
  12.       ファイルの読み込み先はBGMフォルダのままですので、
  13.       ファイルの移動などは特に必要ありません。
  14.       ====================================================================

  15.       ● 注意 ●==========================================================
  16.       このスクリプトを導入すると、
  17.       戦闘BGMにMIDI形式のファイルが再生できなくなります。
  18.       ====================================================================
  19.       
  20.       ver1.12

  21.       Last Update : 2010/07/02
  22.       07/02 : マップBGMを持ち越した際、ゲームオーバーMEが演奏されないバグを修正
  23.       01/23 : マップのBGMを戦闘に持ち越す機能の追加
  24.       12/27 : 逃走時にBGMが復帰しないバグの修正
  25.          : 復帰時にBGMのフェードインを行うように調整
  26.       12/18 : 新規
  27.       
  28.       ろかん   http://kaisouryouiki.web.fc2.com/
  29. =end

  30. #===================================
  31. #  ●設定箇所
  32. #===================================
  33. module Rokan
  34. module Battle_Audio
  35.   # 戦闘にマップBGMを引き継ぐ場合の判定スイッチ番号
  36.   MBATH = 0
  37.   
  38.   # マップBGM引き継ぎ時には勝利MEを演奏しない
  39.   MAWMTH = true
  40. end
  41. end
  42. #===================================
  43. #  ここまで
  44. #===================================

  45. $rsi = {} if $rsi == nil
  46. $rsi["战斗前后BGM继续"] = true

  47. class << Graphics
  48.   alias update_bgm_fade_in update unless $!
  49.   def update
  50.     update_bgm_fade_in
  51.     RPG::BGM.volume_fade_in(3) unless $scene.is_a?(Scene_Battle)
  52.   end
  53. end

  54. module RPG
  55.   class BATTLE_BGS < BGS
  56.     include Rokan::Battle_Audio
  57.     def play
  58.       return if $game_switches[MBATH]
  59.       if @name.empty?
  60.         Audio.bgs_stop
  61.         @@last = BGS.new
  62.       else
  63.         Audio.bgs_play("Audio/BGM/" + @name, @volume, @pitch)
  64.         @@last = self
  65.       end
  66.     end
  67.   end
  68.   
  69.   class BGM < AudioFile
  70.     include Rokan::Battle_Audio
  71.     def play
  72.       if @name.empty?
  73.         Audio.bgm_stop
  74.         @@last = BGM.new
  75.       else
  76.         Audio.bgm_play("Audio/BGM/" + @name, @volume, @pitch)
  77.         @@last_volume  = @@origin_volume = @volume
  78.         @@last = self
  79.       end
  80.     end
  81.    
  82.     def self.stop
  83.       return if $game_temp.in_battle
  84.       if $game_temp.next_scene == "battle"
  85.         volume_off unless $game_switches[MBATH]
  86.         return
  87.       end
  88.       Audio.bgm_stop
  89.       @@last = BGM.new
  90.     end
  91.    
  92.     def self.volume_off?
  93.       return false if @@last.name.empty?
  94.       return (@@last_volume < @@origin_volume)
  95.     end
  96.     def self.volume_fade_in(plas)
  97.       return unless volume_off?
  98.       @@last_volume = [@@last_volume + plas, @@origin_volume].min
  99.       Audio.bgm_play("Audio/BGM/" + @@last.name, @@last_volume, @@last.pitch)
  100.     end
  101.     def self.volume_on
  102.       return if @@last.name.empty?
  103.       Audio.bgm_play("Audio/BGM/" + @@last.name, @@origin_volume, @@last.pitch)
  104.       @@last_volume = @@origin_volume
  105.     end
  106.     def self.volume_off
  107.       return if @@last.name.empty?
  108.       @@last_volume = 0
  109.       Audio.bgm_play("Audio/BGM/" + @@last.name, @@last_volume, @@last.pitch)
  110.     end
  111.   end
  112.   class ME < AudioFile
  113.     include Rokan::Battle_Audio
  114.     alias map_bgm_restart play unless $!
  115.     def play
  116.       if $game_switches[MBATH] && MAWMTH && $scene.is_a?(Scene_Battle)
  117.         $game_system.battle_end_me_play = false
  118.         return
  119.       end
  120.       map_bgm_restart
  121.       if $game_system.battle_end_me_play
  122.         $game_system.battle_end_me_play = false
  123.         RPG::BGM.volume_on
  124.       end
  125.     end
  126.   end
  127. end

  128. class Game_Temp
  129.   #--------------------------------------------------------------------------
  130.   # ● 戦闘時マップBGM記憶変数取得時に、BGSを返す
  131.   #--------------------------------------------------------------------------
  132.   def map_bgm
  133.     return @map_bgs
  134.   end
  135. end

  136. class Game_System
  137.   #--------------------------------------------------------------------------
  138.   # ● 公開インスタンス変数
  139.   #--------------------------------------------------------------------------
  140.   attr_accessor :battle_end_me_play         # バトル終了 ME 演奏済みフラグ
  141.   #--------------------------------------------------------------------------
  142.   # ● オブジェクト初期化
  143.   #--------------------------------------------------------------------------
  144.   alias battle_me_flag_plas initialize
  145.   def initialize
  146.     battle_me_flag_plas
  147.     @battle_end_me_play = false
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● BGM取得
  151.   #--------------------------------------------------------------------------
  152.   def battle_bgm
  153.     bgm = @battle_bgm == nil ? $data_system.battle_bgm : @battle_bgm
  154.     return RPG::BATTLE_BGS.new(bgm.name, bgm.volume, bgm.pitch)
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 終了取得
  158.   #--------------------------------------------------------------------------
  159.   alias map_bgm_fadein_flag battle_end_me
  160.   def battle_end_me
  161.     @battle_end_me_play = true
  162.     map_bgm_fadein_flag
  163.   end
  164. end
复制代码

点评

战斗后可以播放,我想知道的是怎么在场景转换时不被刷掉。不过也谢谢版主。  发表于 2015-6-19 18:47
战斗后可以播放,我想知道的是怎么在场景转换时不被刷掉。不过也谢谢版主。  发表于 2015-6-19 18:46

评分

参与人数 1星屑 +150 收起 理由
怪蜀黍 + 150 塞糖

查看全部评分

[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
90 小时
注册时间
2015-3-2
帖子
46
5
 楼主| 发表于 2015-6-19 18:57:47 | 只看该作者
比如我从横线处打上p "123"(主要是在此有个停止时间)它会弹出一个窗口,这时音乐可以播放,但是只要按下确定音乐就会被刷掉!

点评

是希望切换回地图时,鉴赏音乐把地图音乐刷掉还是地图音乐把鉴赏音乐刷掉?  发表于 2015-6-20 21:16
大概明白了 = = 其实所谓音乐鉴赏的功能相当于是让玩家自行更改地图BGM?  发表于 2015-6-20 21:13
我试了,就是只要场景切换就会被刷掉!放在$scene =……之后也一样。或者能否帮忙做个范例?  发表于 2015-6-20 20:28
所以在横线下再写上把记忆的音乐播放啊  发表于 2015-6-20 09:09

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 我很赞同

查看全部评分

人因为有难忘的记忆而变得坚强,这就是所谓的成长吧!
回复 支持 反对

使用道具 举报

Lv2.观梦者

永无止境的旅程

梦石
0
星屑
503
在线时间
1552 小时
注册时间
2012-6-19
帖子
1226

开拓者贵宾

6
发表于 2015-6-20 00:50:13 | 只看该作者
地图上的BGM会被刷掉?也就是说战斗结束了之后地图上的BGM没了?

点评

战斗没事。我是说怎么像战斗一样:战斗时(鉴赏音乐时)播放战斗音乐(所鉴赏的音乐),然后切回地图画面(菜单画面)就会播放地图的BGM。  发表于 2015-6-20 20:31
[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
90 小时
注册时间
2015-3-2
帖子
46
7
 楼主| 发表于 2015-6-27 17:43:33 | 只看该作者
经过我多方面的观察,发现从Scene_Title到Scene_Map是个从标题BGM转化为地图BGM的过程,找到了$game_map.autoplay语句,于是放在return_to_scene函数的最后一行,但是没有用,转念一想:如果我在菜单画面清理之后放出BGM不就没事了吗,于是脑动大开,在Scene_Menu(return_to_scene函数中是$scene = Scene_Menu.new)的update函数里面添加了三行脚本:
if $game_map.autoplay == nil
  $game_map.autoplay
end
问题就解决了!放出来和大家分享一下,万一有需要的人!
(话说为什么我问的好几个问题都是我自个解决的?)

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 我很赞同

查看全部评分

人因为有难忘的记忆而变得坚强,这就是所谓的成长吧!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
帖子
3600
8
发表于 2015-7-10 16:38:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-12 02:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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