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

Project1

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

[RMVA发布] 【VA】 新人 测试动态事件

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2012-10-1
帖子
36
跳转到指定楼层
1
发表于 2012-10-6 17:53:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在朋友推荐下,国庆节玩了玩rmva。不会ruby。拿了两天来看ruby脚本,跟c++差不多,继承性上有差别。拿了两天来看内置的脚本(还没看完),摸清了大概的流程。大概是对的吧。这把看到的东西跟大家分享哈。

整个脚本单线程加上估计软中断的技术整出来的。有很多全局变量,其中$game_map中有个成员是events,初始化的时候将地图数据中的event添加到events数组中。然后一个是循环不停的遍历执行各个event中的update函数。但是根据代码,只要一个类有update函数就可以加到events中,他就会不断调用这个类的update。

为了不与源代码冲突,我在Game_Map中添加了一个usr_events变量,初始化为空数组。在Game_Map的update中也不断执行usr_events中各成员的update。


不晓得图片能看到不。。

然后写一个新的基类Game_Usr_Eventbase。其中就两个函数一个将自己加到usr_events,一个是从usr_events删除自身。


下面来测试下它是否正常工作。
写一个类继承Game_Usr_Eventbase,功能就是在若干秒过后显示"you are die!"(好像英语有问题。)。要用到一个定时器,定时器到的时候会自动将@timer_come置1。


这个有个问题是谁来调用Game_Usr_Event的add_to_array函数,我的做法是将其嵌入到地图event中,地图event初始化会在地图切换的时候完成。将这个event设置成自动执行,并且在加入自定义的类之后将触发器取消。这样在加载好地图的同时执行地图event,并且用地图event调用add_to_array,然后取消地图event的触发器,使之后不重复执行。先要将@Game_Event中的trigger设置成attr_accessor。注意usr_event要有机制在update中调用delete_from_array。


然后以调试模式启动游戏(打开console的情况下),执行结果就是两秒过后弹出字符串“you are die!”。



Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2012-10-1
帖子
36
2
 楼主| 发表于 2012-10-6 18:06:57 | 只看该作者
回复字数要好多啊。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
210 小时
注册时间
2012-2-15
帖子
126
3
发表于 2012-10-6 18:40:31 | 只看该作者
虽然不明白再说什么,但似乎很厉害的样子……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
263
在线时间
1575 小时
注册时间
2010-6-17
帖子
2892

开拓者贵宾

4
发表于 2012-10-6 19:09:00 | 只看该作者
什么意思 没看懂~~
快来点我一下,你会豁然开朗的
喵Kano特制
←开发中……

←暂时弃坑 电脑上资源全没
回复 支持 反对

使用道具 举报

Lv1.梦旅人

哆啦菌

梦石
0
星屑
46
在线时间
795 小时
注册时间
2010-7-24
帖子
3800
5
发表于 2012-10-6 23:21:31 | 只看该作者
那么实际用途呢?
随便看看
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

6
发表于 2012-10-7 10:42:22 | 只看该作者
C++的循环写法囧
数组循环完全可以用
  1. Array.each {|value| do_something}
复制代码
这样的囧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2012-10-1
帖子
36
7
 楼主| 发表于 2012-10-7 12:43:56 | 只看该作者
之前我也想这样用,但总会出脚本错误。。。。所以索性就用c的写法了,那个实际用途嘛,我还没去想,可能可以用在那种不断按确定键,可以重复产生事件吧。比如泡泡堂不停的放泡泡那种。我现在还在熟悉这个工具啊,囧
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

8
发表于 2012-10-8 15:38:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2012-10-1
帖子
36
9
 楼主| 发表于 2012-10-8 15:54:46 | 只看该作者
其实这段代码有点问题,就是在第一个红框中。
直接写成这种在删除的时候也有些元素会出现一个循环的延迟
i=0;
while(i<@usr_events.size())
usr_events[i].update();
i+=1;
end


‘‘──qbjxiaolei于2012-10-8 15:55补充以下内容:

但是在加入不是很大量的数据的时候还是看不出来的
’’
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2012-10-1
帖子
36
10
 楼主| 发表于 2012-10-9 09:48:43 | 只看该作者
晴兰 发表于 2012-10-8 15:38
C++最常见的scope在Ruby没那么明显,我特别指的是RAII,虽然一个资源可以构造时就取得,但析构在哪里都是个 ...

ruby当中的资源不是自动释放的吗,解释器里面分配的每个资源实体可能都有一个引用计数吧,析构的时候就在引用计数为0的时候估计。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 15:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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