Project1

标题: 如何在切换战斗与地图BGM的时候,BGM承接而不重新播放 [打印本页]

作者: 纯属小虫    时间: 2022-7-29 11:40
标题: 如何在切换战斗与地图BGM的时候,BGM承接而不重新播放
本帖最后由 纯属小虫 于 2022-8-1 00:11 编辑

战斗时战斗BGM重新播放,战斗结束后地图BGM又重新播放,以此往复......有起床铃的既视感了
这样多多少少在频繁战斗的情况下,会对BGM的开头有些审美疲劳

不知道有没有了解RMXP音乐播放器的大佬
我的逻辑如下:
1- 在战斗开始的时候获取并记录地图BGM当前的播放时间和BGM名称
2- 战斗开始的时候 获取记录过的战斗BGM播放过的时间,并从该时刻播放 ——如果BGM名称与上次的战斗BGM不同,则从0开始播放
3- 战斗结束的时候 获取并记录当前战斗BGM的播放时间和BGM名称
4- 战斗结束回到地图的时候 获取记录过的地图BGM播放时间,并从该时刻播放——如果BGM名称与上次的地图BGM不同,则从0开始播放




2022/08/01  翻图书馆翻到了一个大宝贝
或许能够基于以下这个脚本试试吧~~

[RMXP] 扩展音频模块 v1.03
https://rpg.blue/forum.php?mod=v ... amp;fromuid=2717817
(出处: Project1)

作者: st251355    时间: 2022-7-29 18:05
XP不是有內建 記憶BGM/BGS 與 還原BGM/BGS 功能嗎?
作者: 纯属小虫    时间: 2022-7-30 14:59
st251355 发表于 2022-7-29 18:05
XP不是有內建 記憶BGM/BGS 與 還原BGM/BGS 功能嗎?


XP内置的记忆和还原BGM脚本如下

记忆BGM
    $game_system.bgm_memorize

还原BGM
    $game_system.bgm_restore


class Game_System 中

#记忆BGM定义在这
def bgm_memorize
        @memorized_bgm = @playing_bgm
end

#@playing_bgm出现在以下
def bgm_play(bgm)
    @playing_bgm = bgm
    if bgm != nil and bgm.name != ""
      Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch)
    else
      Audio.bgm_stop
    end
    Graphics.frame_reset
end

#还原BGM定义在这
def bgm_restore
    bgm_play(@memorized_bgm)
end

可见,@memorized_bgm和@playing_bgm 的变量本质上只是一行记录BGM名字的字符串,而还原BGM本质就是重新播放一个BGM   

所以,内置记忆还原无法满足我所提出的要求


作者: guoxiaomi    时间: 2022-8-7 20:44
这个AudioEx脚本还挺有趣的,我学习一下




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1