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

Project1

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

[已经解决] 【新手求助】关于如何在事件调用类

[复制链接]

Lv1.梦旅人

梦石
0
星屑
143
在线时间
62 小时
注册时间
2015-5-24
帖子
56
跳转到指定楼层
1
发表于 2017-4-13 11:02:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
小弟尚在学习脚本,目前卡在一个事件调用关卡里面.
不知为何调用脚本必须在脚本里用$scene = Ye.new 才可调用脚本?
而不能直接在事件打入:Ye.new, 而调用使用脚本

小弟目前学习脚本而写出简易代码如下
  1. class Ye
  2.   def main
  3.     s1 = "开始吗"
  4.     s2 = "不开始"
  5.     s3 = "开始说明"
  6.     @窗口 = Window_Command.new(192,[s1,s2,s3])
  7.     @窗口.back_opacity = 0
  8.     @窗口.opacity = 0
  9.     @窗口.contents_opacity = 255
  10.     @窗口.x = 380
  11.     @窗口.y = 100
  12.     # 执行过渡
  13.     Graphics.transition
  14.     # 主循环
  15.     loop do
  16.       # 刷新游戏画面
  17.       Graphics.update
  18.       # 刷新输入信息
  19.       Input.update
  20.       # 刷新画面
  21.       update
  22.       # 如果画面被切换就中断循环
  23.       if $scene != self
  24.         break
  25.       end
  26.     end
  27.     # 装备过渡
  28.     Graphics.freeze
  29.     # 释放命令窗口
  30.     @窗口.dispose
  31.   end
  32.   
  33.     def update
  34.       @窗口.update      
  35.       # 按下 B 键的情况下
  36.       if Input.trigger?(Input::B)
  37.       # 演奏取消 SE
  38.       $game_system.se_play($data_system.cancel_se)
  39.       # 切换到菜单画面
  40.       $scene = Scene_Map.new
  41.       return
  42.     end
  43.       if Input.trigger?(Input::C)
  44.         case @窗口.index
  45.         when 0
  46.            p  "开始吗"
  47.         when 1
  48.           p "不开始"
  49.           when 2
  50.             print "开始说明"
  51.           end

  52.           end
  53.       end
  54.     end




  55.    
复制代码


Lv5.捕梦者 (版主)

梦石
1
星屑
23984
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2017-4-13 11:11:34 手机端发表。 | 只看该作者
注意看脚本编辑器的最后一个片段

因为设置$scene之后,会自动执行的scene的main方法,而YE.new,在执行initialize方法后,main方法根本没有执行。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
143
在线时间
62 小时
注册时间
2015-5-24
帖子
56
3
 楼主| 发表于 2017-4-13 11:23:19 | 只看该作者
guoxiaomi 发表于 2017-4-13 11:11
注意看脚本编辑器的最后一个片段

因为设置$scene之后,会自动执行的scene的main方法,而YE.new,在执行ini ...

感谢版主回答.
我把main改成initialize之后,虽说可以在事件中调用,
但是调用后画面全部卡住,无法动弹,光标也是不动的.
这是什么问题出现的呢?
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23984
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

4
发表于 2017-4-13 11:37:14 | 只看该作者
梦想始终会醒 发表于 2017-4-13 11:23
感谢版主回答.
我把main改成initialize之后,虽说可以在事件中调用,
但是调用后画面全部卡住,无法动弹,光 ...

是这样的,你看看main里面的代码,顺序执行,由于没有修改$scene,所以会直接跳出循环,执行后面的Graphics.freeze方法。如此就把整个画面卡住了。

如果正常通过设置$scene来调用,每次退出重新进入下一个scene的时候,会调用Graphics.transition方法,解除画面冻结。但是你这个本来就是在Scene_Map中的循环,所以没有调用Graphics.transition方法前,画面会处于冻结状态。

点评

如果不想改变$scene,但是要显示窗口互动,可以参考我写的《地图菜单窗口》,技术区里。  发表于 2017-4-13 11:40

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 6

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
143
在线时间
62 小时
注册时间
2015-5-24
帖子
56
5
 楼主| 发表于 2017-4-13 15:09:14 | 只看该作者
guoxiaomi 发表于 2017-4-13 11:37
是这样的,你看看main里面的代码,顺序执行,由于没有修改$scene,所以会直接跳出循环,执行后面的Graphi ...

非常感谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 11:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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