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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
跳转到指定楼层
1
发表于 2022-10-3 22:21:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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


首先在main脚本中指定一个初始值
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Main
  3. #------------------------------------------------------------------------------
  4. #  各定义结束后、从这里开始实际处理。
  5. #==============================================================================
  6.  
  7. begin
  8.   # 准备过渡
  9.   # 设置系统默认字体
  10.   Font.default_name = (["黑体"])
  11.   Graphics.freeze
  12.   # 设置默认地图风格
  13.   $map_style = 0
  14.   # 生成场景对像 (标题画面)
  15.   $scene = Scene_Title.new
  16.   # $scene 为有效的情况下调用 main 过程
  17.   while $scene != nil
  18.     $scene.main
  19.   end
  20.   # 淡入淡出
  21.   Graphics.transition(20)
  22. rescue Errno::ENOENT
  23.   # 补充 Errno::ENOENT 以外错误
  24.   # 无法打开文件的情况下、显示信息后结束
  25.   filename = $!.message.sub("No such file or directory - ", "")
  26.   print("找不到文件 #{filename}。 ")
  27. end


1、单独切换某种素材,只要重新定义RPG::Cache里对应的方法即可,用变量控制风格类型,利用事件或脚本修改变量值来变换风格
比如范例中的切换图块
RUBY 代码复制
  1. module RPG
  2.   module Cache
  3.     def self.tileset(filename)
  4.       if (1..3).include?($map_style)
  5.         folder_name = "Graphics/Tilesets/Style-" + $map_style.to_s + "/"
  6.       else
  7.         folder_name = "Graphics/Tilesets/"
  8.       end
  9.       self.load_bitmap(folder_name, filename)
  10.     end
  11.   end
  12. end


2、若是美工足够给力,所有素材都做成了几种风格,那么可以直接修改load_bitmap方法
RUBY 代码复制
  1. module RPG
  2.   module Cache
  3.     @cache = {}
  4.     def self.load_bitmap(folder_name, filename, hue = 0)
  5.       if (1..3).include?($map_style)
  6.         folder_name += "Style-" + $map_style.to_s + "/"
  7.       end
  8.       path = folder_name + filename
  9.       if not @cache.include?(path) or @cache[path].disposed?
  10.         if filename != ""
  11.           @cache[path] = Bitmap.new(path)
  12.         else
  13.           @cache[path] = Bitmap.new(32, 32)
  14.         end
  15.       end
  16.       if hue == 0
  17.         @cache[path]
  18.       else
  19.         key = [path, hue]
  20.         if not @cache.include?(key) or @cache[key].disposed?
  21.           @cache[key] = @cache[path].clone
  22.           @cache[key].hue_change(hue)
  23.         end
  24.         @cache[key]
  25.       end
  26.     end
  27.   end
  28. end


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

本版积分规则

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

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

GMT+8, 2024-11-22 01:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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