查看: 2660|回复: 0

[原创发布] 简单的素材风格切换

[复制链接]
梦石
0
星屑
4756
在线时间
389 小时
注册时间
2012-11-8
回帖
235
发表于 2022-10-3 22:21:58 | 显示全部楼层 |阅读模式

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

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

×
不知道有没有前辈发过,简单来说就是通过修改RPG::Cache内相关方法实现切换图块/战斗图等素材
可用于地图四季变化、NPC服饰变化等等(美工看了落泪)
范例中为切换地图图块

选择

选择

默认

默认

修改后

修改后


首先在main脚本中指定一个初始值
[pre lang="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)
rescue Errno::ENOENT
  # 补充 Errno::ENOENT 以外错误
  # 无法打开文件的情况下、显示信息后结束
  filename = $!.message.sub("No such file or directory - ", "")
  print("找不到文件 #{filename}。 ")
end[/pre]

1、单独切换某种素材,只要重新定义RPG::Cache里对应的方法即可,用变量控制风格类型,利用事件或脚本修改变量值来变换风格
比如范例中的切换图块
[pre lang="ruby"]module RPG
  module Cache
    def self.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[/pre]

2、若是美工足够给力,所有素材都做成了几种风格,那么可以直接修改load_bitmap方法
[pre lang="ruby"]module RPG
  module Cache
    @cache = {}
    def self.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
      if not @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]
        if not @cache.include?(key) or @cache[key].disposed?
          @cache[key] = @cache[path].clone
          @cache[key].hue_change(hue)
        end
        @cache[key]
      end
    end
  end
end[/pre]

以上是通过修改目录的方式实现,同理,也可修改文件名等方式来实现
范例:百度网盘提取码: RMXP
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部