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

Project1

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

[原创发布] 伪loading随机加载界面脚本

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1164
在线时间
157 小时
注册时间
2022-8-8
帖子
108
跳转到指定楼层
1
发表于 2023-5-30 13:31:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 GOODLATTICE 于 2023-8-8 17:19 编辑

有天突发奇想,想要做一个类似于各种游戏中加载界面显示tip的伪loading效果。
因为我的游戏毕竟重角色重剧情,想要放一些小漫画之类的在伪加载界面供人观赏再好不过。
在纠结代码问题时(本人是Ruby小白,几乎等同于一行代码都不会写的那种,只能看懂部分代码)我想到了请教chatGPT,于是我试着将自己的要求输入chatGPT,它给出框架,我再进行填充。然后在一次一次的出错中最终摸出了这份代码。
欢迎各路大佬优化代码,这份代码写的并不好。错的地方都算我的,好的地方都算GPT的。
RUBY 代码复制
  1. # 良幸脚本-伪loading随机加载界面脚本
  2. # 这是一个可以正常使用的Fortune脚本。
  3. # 效果是利用SceneManager.call(Scene_GoodFortune)对话框脚本指令就可以做到从Graphics/goodfortune名下的文件夹中的png图片中(新加入的图片需要用数字编号命名并且在random bitmap类下加入相应的random读取程序)随机一张图片显示
  4. # 套用它需要在事件对话框的“脚本”选项输入SceneManager.call(Scene_GoodFortune)
  5. # 请在路径Graphics下创建文件夹goodfortune,并将图片重命名为1~(你需要的显示张数),同时修改 # 随机获取一张图像模块的bitmaps=,使得你命名的图片路径始终处于这个定义中(用多少写多少),不然会notfound
  6. # 定义区 - 可以在这里根据需要修改相应参数
  7. # 定义常量
  8. FADE_IN_DURATION = 40        # 淡入持续时间(帧数)
  9. FADE_OUT_DURATION = 40       # 淡出持续时间(帧数)
  10. FADE_IN_FPS = 30             # 淡入过程每秒帧数
  11. FADE_OUT_FPS = 30            # 淡出过程每秒帧数
  12. DISPLAY_DURATION = 110       # 图像显示持续时间(帧数)
  13.  
  14. class Scene_GoodFortune < Scene_Base
  15.   def start
  16.     super
  17.     @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
  18.     create_sprite   # 创建精灵
  19.  
  20.     @fade_in_counter = FADE_IN_DURATION * FADE_IN_FPS / 60             # 计算淡入计数器
  21.     @display_counter = DISPLAY_DURATION                               # 计算显示计数器
  22.     @fade_out_counter = FADE_OUT_DURATION * FADE_OUT_FPS / 60          # 计算淡出计数器
  23.     @fade_in_opacity_rate = 255.0 / (@fade_in_counter + 1)             # 计算每帧淡入透明度变化率
  24.     @fade_out_opacity_rate = 255.0 / (@fade_out_counter + 1)           # 计算每帧淡出透明度变化率
  25.     @sprite.opacity = 0                                               # 初始透明度为0
  26.     @viewport.color.set(0, 0, 0, 0)
  27.  
  28.     @phase = :fade_in  # 当前阶段为淡入阶段
  29.   end
  30.  
  31.   def update
  32.     super
  33.  
  34.     case @phase
  35.     when :fade_in
  36.       update_fade_in
  37.     when :display
  38.       update_display
  39.     when :fade_out
  40.       update_fade_out
  41.     end
  42.   end
  43.  
  44.   # 淡入效果更新
  45.   def update_fade_in
  46.     @sprite.opacity += @fade_in_opacity_rate.ceil                # 调整透明度
  47.     @fade_in_counter -= 1
  48.  
  49.     if @fade_in_counter <= 0
  50.       @phase = :display  # 进入图像显示阶段
  51.     end
  52.   end
  53.  
  54.   # 图像显示更新
  55.   def update_display
  56.     @display_counter -= 1
  57.  
  58.     if @display_counter <= 0
  59.       @phase = :fade_out  # 进入淡出阶段
  60.     end
  61.   end
  62.  
  63.   # 淡出效果更新
  64.   def update_fade_out
  65.     @sprite.opacity -= @fade_out_opacity_rate.ceil              # 调整透明度
  66.     @fade_out_counter -= 1
  67.  
  68.     if @fade_out_counter <= 0
  69.       dispose_sprite  # 释放精灵资源
  70.       SceneManager.return
  71.     end
  72.   end
  73.  
  74.   # 创建精灵和位图对象
  75.   def create_sprite
  76.     @sprite = Sprite.new(@viewport)
  77.     @bitmap = random_bitmap  # 随机图像
  78.     @sprite.bitmap = @bitmap
  79.     center_sprite(@sprite)  # 将精灵居中
  80.   end
  81.  
  82.   # 释放精灵和位图对象
  83.   def dispose_sprite
  84.     @bitmap.dispose
  85.     @sprite.dispose
  86.     @viewport.dispose
  87.   end
  88.  
  89.   # 随机获取一张图像
  90.   def random_bitmap
  91.     bitmaps = [Bitmap.new("Graphics/goodfortune/1"),
  92.                Bitmap.new("Graphics/goodfortune/2"),]
  93.  
  94.     return bitmaps[rand(bitmaps.size)]
  95.   end
  96.  
  97.   # 将精灵设置在视口正中间
  98.   def center_sprite(sprite)
  99.     sprite.x = (Graphics.width - sprite.width) / 2
  100.     sprite.y = (Graphics.height - sprite.height) / 2
  101.   end
  102. end


使用效果图,实际每次触发的显示都为随机


本脚本使用署名-相同方式共享协议 3.0 (CC BY-SA 3.0协议),使用不需要报告,同时允许使用者在此基础上进行改编,也允许其无偿的使用于商业作品与非商业性质作品及参加比赛的作品中。
著名请标注“良怒”或“GOODRAGE”,感谢!
一点五创RPG游戏DAliY—GOODcollection正在制作中(XvX)
本人的第一个RPG游戏,还有很多不会的地方。现在的日常是修奇怪的幼稚bug。
进度帖:https://rpg.blue/thread-491443-1-1.html
RGSS3(VXACE)脚本收集计划!:https://rpg.blue/thread-491675-1-1.html
因为不知道怎么加图所以这里目前没有图片
邮箱是[email protected],虽然现在还不知道有什么用
#地球ヤバイ
#流石神働け

Lv1.梦旅人

梦石
0
星屑
130
在线时间
63 小时
注册时间
2021-4-23
帖子
24
2
发表于 2023-8-3 07:27:03 | 只看该作者
多大变多大多大叫多大
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20970
在线时间
9334 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

3
发表于 2023-8-3 20:17:33 | 只看该作者
和chatgpt说一下,Bitmap.new 用完要 dispose,不然会有内存泄漏

点评

感谢指正,我这就修订一下上传新的脚本  发表于 2023-8-6 20:50
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
225
在线时间
41 小时
注册时间
2018-2-21
帖子
3
4
发表于 2023-8-10 17:55:48 | 只看该作者
感谢分享,顺便小漫画好可爱

点评

谢谢喜欢!!  发表于 2023-11-17 14:45
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1188
在线时间
87 小时
注册时间
2022-2-5
帖子
194
5
发表于 2023-8-10 21:18:08 | 只看该作者
玩屁股肉玩的

点评

其实是玩bms玩的(?  发表于 2023-11-17 14:46
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
54
在线时间
8 小时
注册时间
2023-11-10
帖子
1
6
发表于 2023-11-12 14:28:11 | 只看该作者
本帖最后由 Uryan 于 2023-11-12 15:36 编辑

感谢分享!请问楼主这个插件MV能用吗?

二编:
自己改好了!感谢楼主分享原代码!

点评

WOW!厉害!吧唧吧唧鼓掌! 其实mv脚本的事情我还真不太会,还在学习中嘿嘿。  发表于 2023-11-17 14:48
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-4-30 11:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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