Project1

标题: 好奇,VA那些Windows类不属于Ruby,为什么是用Ruby语法 [打印本页]

作者: 掘窖人    时间: 2021-11-18 14:01
标题: 好奇,VA那些Windows类不属于Ruby,为什么是用Ruby语法
Bitmap
Color
Font
Plane
Rect
Sprite
Table
Tilemap
Tone
Viewport
Window

比如这些类,我看过之前的贴子说为什么要手动释放的时候,有人说它们本身不属于Ruby,但奇怪为什么它们的语法是Ruby的语法?(所以当初为什么看了7篇Ruby教程都不会画窗...)
作者: enghao_lim    时间: 2021-11-18 14:58
他们说的应该是核心非ruby类,但是这些的确是ruby类。严格来说是非ruby类被包装成ruby类来调用了。至于你为什么学不会画窗,应该不是ruby也不是窗的问题……
作者: 真·可乐    时间: 2021-11-18 15:02
懂的都懂
作者: 百里_飞柳    时间: 2021-11-18 16:16
这些,就是被封装成dll文件的东西啊
原本都是c或c艹写的,然后放出了ruby可以调用的接口

脚本编辑器里的rgss就是基于这些实现了一套jrpg框架
作者: fux2    时间: 2021-11-18 17:26
ruby本身都是c实现的,在底层他们之间并没有什么障碍,我讲完了
作者: guoxiaomi    时间: 2021-11-18 19:05
本帖最后由 guoxiaomi 于 2021-11-19 13:57 编辑

为什么要手动释放?这些东西只要“存在”就会一直在显示屏上显示内容。而做游戏对画面显示什么东西应该要有完全的掌控。

但实际上你不手动释放也没关系,直接在不想显示的时候把visible设置为false,等待GC就行。

想了想,万一rm的内部实现是把initialize绑定了new/malloc,dispose绑定了C里的delete/free,那不主动释放是有可能导致内存泄漏。不过那也是rm写的不好……我用c++写的那个就会在GC时触发析构函数,随便你怎么做都不会内存泄漏,那这种时候主动dispose和改成visible=false等待GC就没什么差别了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1