本帖最后由 灯笼菜刀王 于 2020-10-2 00:22 编辑 用全局变量来实现刷新,简单做法就是这样 $www.update if $www != nil 把这句塞到所有 scene 类的主UPDATE里 然后写个带自动释放的窗口 class Win_popup < Window_Base def initialize(str) super(220,208,200,64) self.contents = Bitmap.new(168,32) self.contents.draw_text(0,0,168,32,str,1) @w = 510 end def update self.opacity = @w self.contents_opacity = @w @w -= 12 if @w <= 0 $www.dispose $www = nil end end end 然后,在需要的地方给全局变量赋值 $www = Win_popup.new("天下无敌") 就行了, 因为你所有scene里都有它的 update 所以不管哪里调用都一样可以继续刷新, 就不存在卡进程的问题咯 像这样, 经过三个scene都一样继续刷新 |
本帖最后由 灯笼菜刀王 于 2020-9-29 12:03 编辑 1,因为我是用单独刷新窗口的方式, 调用max后就自己循环刷新40帧左右, 导致原本应该瞬间执行完毕的gain_item产生了时间差,它下面的Window.refresh延后执行自然你就看到黑底了,笑 解决方法, 让它和主main一起刷新即可, 具体方法以前有让你实验过(说明窗口UPDATE的时候,用全局变量实现跨scene刷新), 自己思考下吧 2,用你最后一张图的方法就可以了呗,事件处理最绿色了, 不过判定要改成 持有数 + 获得数 < 上限 才符合逻辑 至于想省事可以对list下手, 笑, 给你个栗子吧
把这个脚本插到 Interpreter 类下面main 上面 然后去 条件分歧-脚本:塞得下? 就可以得到你要的判断了, 且支持复数道具/武器/防具的判断 PS:没测试哦 |
miantouchi 发表于 2020-9-28 22:47 你在脚本那写个获得宝箱物品满了就打开开关 到宝箱事件开关打开时显示已满,然后关掉开关... |
本帖最后由 灯笼菜刀王 于 2020-9-28 12:05 编辑 没事别想着折腾对话窗口, 咱以前不是和你说了,它属于中BOSS级别的,要调用它可没那么简单,笑 只要显示个文字窗口而已, 直接写就好啦 栗子: #-------------------------------------------------------------------------- # ● 增加物品 (减少) # item_id : 物品 ID # n : 个数 #-------------------------------------------------------------------------- def gain_item(item_id, n) # 更新 hash 的个数数据 if item_id > 0 max("#{$data_items[item_id].name}已满")if item_number(item_id) + n >= 10 @items[item_id] = [[item_number(item_id) + n, 0].max,10].min end end def max(str) a = Window_Base.new(220,208,200,64) a.contents = Bitmap.new(168,32) a.contents.draw_text(0,0,168,32,str,1) w = 510 loop do a.opacity = w a.contents_opacity = w w -= 12 if w <= 0 a.dispose break end Graphics.update end end |
参与人数 2 | 星屑 +100 | 赞 +2 | 收起 理由 |
---|---|---|---|
RyanBern | + 100 | + 1 | 认可答案 |
miantouchi | + 1 | 认可答案 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-5-4 15:41
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.