Project1
标题:
如何储存和播放音乐?
[打印本页]
作者:
星辰浩劫
时间:
2015-6-7 18:08
标题:
如何储存和播放音乐?
受到一个va脚本的启发,自己像模仿一个音乐鉴赏的场景,可是,如何储存和播放音乐呢?我试着利用战斗前储存地图的bgm,然后播放战斗音乐,战斗结束后再播放原本储存的地图的bgm的原理,可是切换回场景就被刷掉了,然后就没有bgm了。请问一下怎么样避免在场景更换的时候刷掉或者是其他同样的方法?
作者:
Password
时间:
2015-6-16 20:44
a = RPG::BGM.last
然后最后播放的BGM就被储存到a里了
a.play
就继续播放储存到a里的BGM了
作者:
结城照美
时间:
2015-6-16 21:03
别的游戏里被刷掉才是正常的吧,鉴赏模式就是让你乖乖别动听音乐的
作者:
丿梁丶小柒
时间:
2015-6-18 23:00
嘘,小声点,我一般是不会告诉别人的。
=begin
★戦闘前後BGM継続★
戦闘曲にBGMではなく、BGSを使用し、
バックグラウンドにマップBGMを音量0で流し続けることで、
戦闘後、マップ上のBGMを途切れさせずに、再開させることができます。
また、指定スイッチをONにしている場合、戦闘BGMを演奏せず、
マップBGMを戦闘に持ち越すことができます。
● 仕様 ●==========================================================
BGSの機能を使って、戦闘曲を演奏しますが、
ファイルの読み込み先はBGMフォルダのままですので、
ファイルの移動などは特に必要ありません。
====================================================================
● 注意 ●==========================================================
このスクリプトを導入すると、
戦闘BGMにMIDI形式のファイルが再生できなくなります。
====================================================================
ver1.12
Last Update : 2010/07/02
07/02 : マップBGMを持ち越した際、ゲームオーバーMEが演奏されないバグを修正
01/23 : マップのBGMを戦闘に持ち越す機能の追加
12/27 : 逃走時にBGMが復帰しないバグの修正
: 復帰時にBGMのフェードインを行うように調整
12/18 : 新規
ろかん http://kaisouryouiki.web.fc2.com/
=end
#===================================
# ●設定箇所
#===================================
module Rokan
module Battle_Audio
# 戦闘にマップBGMを引き継ぐ場合の判定スイッチ番号
MBATH = 0
# マップBGM引き継ぎ時には勝利MEを演奏しない
MAWMTH = true
end
end
#===================================
# ここまで
#===================================
$rsi = {} if $rsi == nil
$rsi["战斗前后BGM继续"] = true
class << Graphics
alias update_bgm_fade_in update unless $!
def update
update_bgm_fade_in
RPG::BGM.volume_fade_in(3) unless $scene.is_a?(Scene_Battle)
end
end
module RPG
class BATTLE_BGS < BGS
include Rokan::Battle_Audio
def play
return if $game_switches[MBATH]
if @name.empty?
Audio.bgs_stop
@@last = BGS.new
else
Audio.bgs_play("Audio/BGM/" + @name, @volume, @pitch)
@@last = self
end
end
end
class BGM < AudioFile
include Rokan::Battle_Audio
def play
if @name.empty?
Audio.bgm_stop
@@last = BGM.new
else
Audio.bgm_play("Audio/BGM/" + @name, @volume, @pitch)
@@last_volume = @@origin_volume = @volume
@@last = self
end
end
def self.stop
return if $game_temp.in_battle
if $game_temp.next_scene == "battle"
volume_off unless $game_switches[MBATH]
return
end
Audio.bgm_stop
@@last = BGM.new
end
def self.volume_off?
return false if @@last.name.empty?
return (@@last_volume < @@origin_volume)
end
def self.volume_fade_in(plas)
return unless volume_off?
@@last_volume = [@@last_volume + plas, @@origin_volume].min
Audio.bgm_play("Audio/BGM/" + @@last.name, @@last_volume, @@last.pitch)
end
def self.volume_on
return if @@last.name.empty?
Audio.bgm_play("Audio/BGM/" + @@last.name, @@origin_volume, @@last.pitch)
@@last_volume = @@origin_volume
end
def self.volume_off
return if @@last.name.empty?
@@last_volume = 0
Audio.bgm_play("Audio/BGM/" + @@last.name, @@last_volume, @@last.pitch)
end
end
class ME < AudioFile
include Rokan::Battle_Audio
alias map_bgm_restart play unless $!
def play
if $game_switches[MBATH] && MAWMTH && $scene.is_a?(Scene_Battle)
$game_system.battle_end_me_play = false
return
end
map_bgm_restart
if $game_system.battle_end_me_play
$game_system.battle_end_me_play = false
RPG::BGM.volume_on
end
end
end
end
class Game_Temp
#--------------------------------------------------------------------------
# ● 戦闘時マップBGM記憶変数取得時に、BGSを返す
#--------------------------------------------------------------------------
def map_bgm
return @map_bgs
end
end
class Game_System
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :battle_end_me_play # バトル終了 ME 演奏済みフラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias battle_me_flag_plas initialize
def initialize
battle_me_flag_plas
@battle_end_me_play = false
end
#--------------------------------------------------------------------------
# ● BGM取得
#--------------------------------------------------------------------------
def battle_bgm
bgm = @battle_bgm == nil ? $data_system.battle_bgm : @battle_bgm
return RPG::BATTLE_BGS.new(bgm.name, bgm.volume, bgm.pitch)
end
#--------------------------------------------------------------------------
# ● 終了取得
#--------------------------------------------------------------------------
alias map_bgm_fadein_flag battle_end_me
def battle_end_me
@battle_end_me_play = true
map_bgm_fadein_flag
end
end
复制代码
作者:
星辰浩劫
时间:
2015-6-19 18:57
FE6706E05A0E1C43DE1D1A81138A1E86.jpg
(15.92 KB, 下载次数: 27)
下载附件
保存到相册
2015-6-19 18:55 上传
比如我从横线处打上p "123"(主要是在此有个停止时间)它会弹出一个窗口,这时音乐可以播放,但是只要按下确定音乐就会被刷掉!
作者:
丿梁丶小柒
时间:
2015-6-20 00:50
地图上的BGM会被刷掉?也就是说战斗结束了之后地图上的BGM没了?
作者:
星辰浩劫
时间:
2015-6-27 17:43
经过我多方面的观察,发现从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
问题就解决了!放出来和大家分享一下,万一有需要的人!
(话说为什么我问的好几个问题都是我自个解决的?)
作者:
冷峻逸
时间:
2015-7-10 16:38
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1