【开发笔记】Godot 4 GDExtension (C++)
本帖最后由 囿里有条小咸鱼 于 2023-10-12 19:13 编辑嗯,这个帖子就是用来分享自己开发GDExtension的,随缘更新。
(P.S. 我真的只会一点点点C++ QwQ)
附赠两个我已经制作好的GDExtension:
数学库Mathorm:点我传送
实体节点EntityBody2D:点我传送
安装方法详见这些链接的github readme说明(有中文版)
这些插件可以直接用于扩展使用GDScript开发游戏的体验,也充分利用C++的性能优势来弥补因使用GDScript而造成的高性能消耗的问题。
开发的时候才注意到的几个问题:
[*]大部分内置类型都是以结构体的形式出现的,如Vector2。对于在函数里设置形参需要使用结构体的情况,要使用引用作为形参而非普通变量(拷贝),因为他们大多数情况下都不可能是空值
[*]但是,对于对象这种有可能没有指向【也就是null】的情况,那就不一样了,因此,如果一个函数的形参含有对象时,应使用指针而非引用,因为引用是不允许引用空对象的。
[*]GDExtension C++里无法直接访问某个Godot类的属性,必须通过其setter和getter来访问。
[*]记得#include
[*]GDExtension目前貌似无法做到自动检测该GDE的依赖GDE是否存在,而且在编译时还必须得把一个依赖库包进本GDE库里才行(也就是假依赖)。真心希望godot能加入真GDE依赖吧……
GDExtension的setter和getter默认是自带@tool功能的,因此会在检查器里实时发生变化。每隔一段时间都会通过getter来获取数值
昨天晚上发现EntityBody2D的motion的setter有重大bug,现在正在修复 囿里有条小咸鱼 发表于 2023-10-10 10:25
GDExtension的setter和getter默认是自带@tool功能的,因此会在检查器里实时发生变化。每隔一段时间都会通过 ...
这个问题被我用了个比较别扭的方式修掉了,同时还支持在属性里直接修改velocity,非常nice 1L中实体节点插件已更新2.0版本,附加中文doc,详情见1l链接 EntityBody2D 3.0已上线!
页:
[1]