查看: 85|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    昨天 10:15
  • 签到天数: 73 天

    连续签到: 1 天

    [LV.6]常住居民II

    2044

    主题

    86

    回帖

    8602

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    -2
    卡币
    6460
    OK点
    16
    积分
    8602
    发表于 2024-4-12 17:25:11 | 显示全部楼层 |阅读模式
    有天突发奇想,想要做一个类似于各种游戏中加载界面显示tip的伪loading效果。
    因为我的游戏毕竟重角色重剧情,想要放一些小漫画之类的在伪加载界面供人观赏再好不过。
    在纠结代码问题时(本人是Ruby小白,几乎等同于一行代码都不会写的那种,只能看懂部分代码)我想到了请教chatGPT,于是我试着将自己的要求输入chatGPT,它给出框架,我再进行填充。然后在一次一次的出错中最终摸出了这份代码。
    欢迎各路大佬优化代码,这份代码写的并不好。错的地方都算我的,好的地方都算GPT的。
    [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




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



    本帖来自P1论坛作者GOODLATTICE,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg. blue/thread-493360-1-1.html 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-9-21 16:26 , Processed in 0.050902 second(s), 42 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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