sunyubokkkkk sunyubokkkkk
关注数: 18 粉丝数: 35 发帖数: 3,481 关注贴吧数: 20
【经验分享】关于灵活使用父对象、事件管理器的思想、用户事件 注:本人水平也有限,此贴为经验分享,非教程。有任何错误之处,烦请指出。 先把这三者分开来讲,最后会以我手头的工程为例子,把三者合在一起。 首先说说父对象。我本人平常开发的时候是比较频繁使用父对象的,但我发现一些新人似乎完全不用,甚至完全不理解父对象,没有得到父对象这一功能对开发效率的提高以及对工程结构的清晰化。 先用自己的话解释一下GM里的父对象: GM中父对象(Parent)的概念,即其他语言中“继承”或“派生”的概念。那继承又是什么意思呢?我们生活中常听到,谁谁谁的小孩继承了他爸爸什么什么特点,意思是这个小孩(子对象)拥有他父亲(父对象)的某些特点。但同时,毕竟这个小孩是不同于他父亲的另一个人,所以在拥有他父亲的某些特点的同时,也会有自己不同于其父亲的特点。因此,我们可以推出,父对象的作用是令其子对象拥有其本身的代码以外同时可以有自己的其他代码。---------------------------------------- 举个例子,你的选关界面有20个按钮,你会怎么做? A. 编写每一个按钮的时候新建一个object,独立为其写Create事件定义自己需要的变量,写Step事件进行鼠标点击判断和执行点击后的动作,写Draw事件绘制出按钮的背景和文字等; B. 编写好第一个按钮的各个事件,然后复制19个,再分别打开这19个复制出来的object中的Step事件代码窗口以改变点击后执行的动作; C. 编写一个父对象,写Create事件定义所有按钮都共有的变量,写Step事件进行鼠标点击判断,写Draw事件绘制背景,再创建20个对象继承自这个父对象,这20个新建的object不需要修改任何地方也不需要自己写点击判定代码,只需要写上点击后的动作。 ----------------------------------------- 从创建时的工作量来说,A排除,因为要打的代码比另外两个多太多。B和C的工作量类似。 从整个工程中的代码量来说,C明显比A和B要少很多。 从修改时的工作量来说,倘若你后来发现你的按钮的判定代码书写有误,或者你要为所有按钮添加一个共同的新功能,那么A和B要一个一个打开来重复地修改相同的地方,而C只需要打开父对象修改一次对应位置。 由此可见,使用父对象对开发效率有很大的提高,对于大工程中各个object之间的关系也有了更好的结构。
交流下GMS2试用的体验 昨天帮弟弟做作业时候用了下GMS2试用版,感觉跟GMS1还是有很多区别(仿佛是废话)。想在这跟大家交流一下。 1. 首次启动安装Runtime。 这个吧里也有人问过了,下载很慢。但实际上看起来如果你的VPN不是全速的话,下载速度还不如裸连稳定。另外,下载过程中开关VPN可能导致下载直接跳过,导致无法运行和调试游戏。 2. 新建工程自动创建第一个房间。 算是省了点事吧。新建工程里面自带room0。 3. 中央工作区。 所有object, sprite, font, 工程设置等都在这个Workspace页面进行,单个对象的属性后续打开的窗口有线连接,开启关闭都有动画。在代码模式不用再在每个事件都拖个执行代码段按钮上去了,倒是不错。按住鼠标中键拖动画面。另外感觉关闭动画很拖时间。由于关闭窗口后工作区会自动聚焦到上一级窗口,但必须等关闭动画结束才移动,还不如以前自己切换窗口。还有就是双击资源开启的新窗口在工作区的位置取决于当时你的工作区聚焦在哪里,有时候就会离前一个打开的资源的窗口挺远。本来我觉得这种工作区模式的好处就在于可以快速看到各个资源清晰的组织关系,但这样反而不方便,还要我拖着工作区去找?或者缩放来去找? 4. 房间编辑器 房间内容似乎和工作区是同级的,它不在工作区内编辑,而是和工作区一样占用一个选项卡页面。而房间属性是在整个gms2左边的一条窗口。不知道是不是我瞎了,至始至终没找到room speed在哪,不得不在Creation Code里改。然后两个明显区别一个是layer系统。默认分为background layer和instance layer,创建实例函数也分裂为instance_create_layer和instance_create_depth。暂时还没研究这个layer的特性。另一个改动就是View系统。在代码里很多view属性的访问变成了要用camera_系列函数,缺点是增加了使用复杂程度,优点暂未研究。而且房间内容界面我是至始至终没发现能用鼠标右键之类的快捷键删除摆上去的实例。是试用版的原因?
1 下一页