查看: 2543|回复: 9

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

[复制链接]
梦石
0
星屑
1436
在线时间
175 小时
注册时间
2022-8-8
回帖
104
发表于 2023-5-30 13:31:33 | 显示全部楼层 |阅读模式

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

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

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

有天突发奇想,想要做一个类似于各种游戏中加载界面显示tip的伪loading效果。
因为我的游戏毕竟重角色重剧情,想要放一些小漫画之类的在伪加载界面供人观赏再好不过。
在纠结代码问题时(本人是Ruby小白,几乎等同于一行代码都不会写的那种,只能看懂部分代码)我想到了请教chatGPT,于是我试着将自己的要求输入chatGPT,它给出框架,我再进行填充。然后在一次一次的出错中最终摸出了这份代码。
欢迎各路大佬优化代码,这份代码写的并不好。错的地方都算我的,好的地方都算GPT的。
[pre lang="ruby"]# 良幸脚本-伪loading随机加载界面脚本
# 这是一个可以正常使用的Fortune脚本。
# 效果是利用SceneManager.call(Scene_GoodFortune)对话框脚本指令就可以做到从Graphics/goodfortune名下的文件夹中的png图片中(新加入的图片需要用数字编号命名并且在random bitmap类下加入相应的random读取程序)随机一张图片显示
# 套用它需要在事件对话框的“脚本”选项输入SceneManager.call(Scene_GoodFortune)
# 请在路径Graphics下创建文件夹goodfortune,并将图片重命名为1~(你需要的显示张数),同时修改 # 随机获取一张图像模块的bitmaps=,使得你命名的图片路径始终处于这个定义中(用多少写多少),不然会notfound
# 定义区 - 可以在这里根据需要修改相应参数
# 定义常量
FADE_IN_DURATION = 40        # 淡入持续时间(帧数)
FADE_OUT_DURATION = 40       # 淡出持续时间(帧数)
FADE_IN_FPS = 30             # 淡入过程每秒帧数
FADE_OUT_FPS = 30            # 淡出过程每秒帧数
DISPLAY_DURATION = 110       # 图像显示持续时间(帧数)

class Scene_GoodFortune < Scene_Base
  def start
    super
    @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
    create_sprite   # 创建精灵

    @fade_in_counter = FADE_IN_DURATION * FADE_IN_FPS / 60             # 计算淡入计数器
    @display_counter = DISPLAY_DURATION                               # 计算显示计数器
    @fade_out_counter = FADE_OUT_DURATION * FADE_OUT_FPS / 60          # 计算淡出计数器
    @fade_in_opacity_rate = 255.0 / (@fade_in_counter + 1)             # 计算每帧淡入透明度变化率
    @fade_out_opacity_rate = 255.0 / (@fade_out_counter + 1)           # 计算每帧淡出透明度变化率
    @sprite.opacity = 0                                               # 初始透明度为0
    @viewport.color.set(0, 0, 0, 0)

    @phase = :fade_in  # 当前阶段为淡入阶段
  end

  def update
    super

    case @phase
    when :fade_in
      update_fade_in
    when :display
      update_display
    when :fade_out
      update_fade_out
    end
  end

  # 淡入效果更新
  def update_fade_in
    @sprite.opacity += @fade_in_opacity_rate.ceil                # 调整透明度
    @fade_in_counter -= 1

    if @fade_in_counter <= 0
      @phase = :display  # 进入图像显示阶段
    end
  end

  # 图像显示更新
  def update_display
    @display_counter -= 1

    if @display_counter <= 0
      @phase = :fade_out  # 进入淡出阶段
    end
  end

  # 淡出效果更新
  def update_fade_out
    @sprite.opacity -= @fade_out_opacity_rate.ceil              # 调整透明度
    @fade_out_counter -= 1

    if @fade_out_counter <= 0
      dispose_sprite  # 释放精灵资源
      SceneManager.return
    end
  end

  # 创建精灵和位图对象
  def create_sprite
    @sprite = Sprite.new(@viewport)
    @bitmap = random_bitmap  # 随机图像
    @sprite.bitmap = @bitmap
    center_sprite(@sprite)  # 将精灵居中
  end

  # 释放精灵和位图对象
  def dispose_sprite
    @bitmap.dispose
    @sprite.dispose
    @viewport.dispose
  end

  # 随机获取一张图像
  def random_bitmap
    bitmaps = [Bitmap.new("Graphics/goodfortune/1"),
               Bitmap.new("Graphics/goodfortune/2"),]

    return bitmaps[rand(bitmaps.size)]
  end

  # 将精灵设置在视口正中间
  def center_sprite(sprite)
    sprite.x = (Graphics.width - sprite.width) / 2
    sprite.y = (Graphics.height - sprite.height) / 2
  end
end[/pre]

[fold=使用效果图,实际每次触发的显示都为随机] 录制_2023_08_06_21_17_48_660.gif [/fold]

本脚本使用署名-相同方式共享协议 3.0 (CC BY-SA 3.0协议),使用不需要报告,同时允许使用者在此基础上进行改编,也允许其无偿的使用于商业作品与非商业性质作品及参加比赛的作品中。
著名请标注“良怒”或“GOODRAGE”,感谢!
一点五创RPG游戏DAliY—GOODcollection正在制作中(XvX)

进度帖:https://rpg.blue/thread-491443-1-1.html
RGSS3(VXACE)脚本收集计划!:https://rpg.blue/thread-491675-1-1.html
已完成作品:极彩色

邮箱是2968992780@qq.com,虽然现在还不知道有什么用
#地球ヤバイ
#流石神働け
梦石
0
星屑
95
在线时间
94 小时
注册时间
2021-4-23
回帖
37
发表于 2023-8-3 07:27:03 | 显示全部楼层
多大变多大多大叫多大
回复

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2023-8-3 20:17:33 | 显示全部楼层
和chatgpt说一下,Bitmap.new 用完要 dispose,不然会有内存泄漏

点评

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

使用道具 举报

梦石
0
星屑
225
在线时间
41 小时
注册时间
2018-2-21
回帖
3
发表于 2023-8-10 17:55:48 | 显示全部楼层
感谢分享,顺便小漫画好可爱

点评

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

使用道具 举报

梦石
0
星屑
1217
在线时间
89 小时
注册时间
2022-2-5
回帖
190
发表于 2023-8-10 21:18:08 | 显示全部楼层
玩屁股肉玩的

点评

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

使用道具 举报

梦石
0
星屑
94
在线时间
12 小时
注册时间
2023-11-10
回帖
1
发表于 2023-11-12 14:28:11 | 显示全部楼层
本帖最后由 Uryan 于 2023-11-12 15:36 编辑

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

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

点评

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

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部