不知道有没有前辈发过,简单来说就是通过修改RPG::Cache内相关方法实现切换图块/战斗图等素材
可用于地图四季变化、NPC服饰变化等等(美工看了落泪)
范例中为切换地图图块
首先在main脚本中指定一个初始值
RUBY 代码 - #==============================================================================
- # ■ Main
- #------------------------------------------------------------------------------
- # 各定义结束后、从这里开始实际处理。
- #==============================================================================
- begin
- # 准备过渡
- # 设置系统默认字体
- Font.default_name = (["黑体"])
- Graphics.freeze
- # 设置默认地图风格
- $map_style = 0
- # 生成场景对像 (标题画面)
- $scene = Scene_Title.new
- # $scene 为有效的情况下调用 main 过程
- while$scene != nil
- $scene.main
- end
- # 淡入淡出
- Graphics.transition(20)
- rescueErrno::ENOENT
- # 补充 Errno::ENOENT 以外错误
- # 无法打开文件的情况下、显示信息后结束
- filename = $!.message.sub("No such file or directory - ", "")
- print("找不到文件 #{filename}。 ")
- end
复制代码
1、单独切换某种素材,只要重新定义RPG::Cache里对应的方法即可,用变量控制风格类型,利用事件或脚本修改变量值来变换风格
比如范例中的切换图块
RUBY 代码 - module RPG
- module Cache
- defself.tileset(filename)
- if(1..3).include?($map_style)
- folder_name = "Graphics/Tilesets/Style-" + $map_style.to_s + "/"
- else
- folder_name = "Graphics/Tilesets/"
- end
- self.load_bitmap(folder_name, filename)
- end
- end
- end
复制代码
2、若是美工足够给力,所有素材都做成了几种风格,那么可以直接修改load_bitmap方法
RUBY 代码 - module RPG
- module Cache
- @cache = {}
- defself.load_bitmap(folder_name, filename, hue = 0)
- if(1..3).include?($map_style)
- folder_name += "Style-" + $map_style.to_s + "/"
- end
- path = folder_name + filename
- ifnot@cache.include?(path)or@cache[path].disposed?
- if filename != ""
- @cache[path] = Bitmap.new(path)
- else
- @cache[path] = Bitmap.new(32, 32)
- end
- end
- if hue == 0
- @cache[path]
- else
- key = [path, hue]
- ifnot@cache.include?(key)or@cache[key].disposed?
- @cache[key] = @cache[path].clone
- @cache[key].hue_change(hue)
- end
- @cache[key]
- end
- end
- end
- end
复制代码
以上是通过修改目录的方式实现,同理,也可修改文件名等方式来实现
范例: 百度网盘提取码: RMXP
本帖来自P1论坛作者qq634488405,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=491167 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |