https://www.youtube.com/watch?v=Obeu2b2eN04&list=PLZ2NyOcFnfQOko5ZysZeGkH3bfw2UtbOK&index=2
GDNative C++示例 — Godot Engine (stable) 简体中文文档
推荐先看看第二个链接(官网关于gdnative配置c++的教程,大部分中文)
本文重点讲怎么配置gdnative - vs,不会讲具体讲gdnative改怎么用
下载链接:GitHub - godotengine/godot-cpp: C++ bindings for the Godot script API
!注意 ! 下载如果使用的是zip下载,一定要进入godot-header文件夹,把godot-header也下载了,并放在相应的位置
推荐使用递归克隆
如果没有scons命令的自行百度下载
打开cmd使用cd命令进入godot-cpp对应的文件夹,使用如下指令:
scons platform= generate_bindings=yes -j bits= target=
生成好的lib文件应该现在就回出现在你godot-cpp文件夹里面的bin文件夹里面
创建(选择)一个存放所有godot项目的文件夹,把刚才godot-cpp放进去,然后在里面再创建一个文件夹命名为
你项目的名字,然后再在你刚才创建的名为你项目的文件夹里面创建godot项目和vs工程
比如:我存放所有godot项目的文件夹为:D:\GodotPrj
我的项目文件夹为:D:\GodotPrj\dodgeCreeps
我的godot项目文件夹为:D:\GodotPrj\dodgeCreeps\dodgeCreeps
我的vs工程文件夹为:D:\GodotPrj\dodgeCreeps\CPP_DLLMaking
打开你的vs工程,打开你的你的项目属性:
我们先来配置共有的,选择所有配置-所有配置,平台-所有平台:
在配置属性-常规那一栏,选择输出目录到你godot项目文件夹里的bin(名字自取,这个文件夹是你自己创建的,装你生成的文件,为了方便)文件夹,同时配置类型选择dll:
在配置属性-vc++目录那一项,选择包含目录到你godot-cpp里的godot-hear和include以及include/gen以及include/core,选择库目录到你godot-cpp里面的bin(图片中我把文件夹名字从bin改成lib,反正就是你生成的lib文件的文件夹名字):
(对于我的目录结构就是):
然后链接器-常规-附加库目录也选为你生成lib文件的文件夹:
(比如我的就是):
然后我们来配置不共同的:
先把配置改为debug或者release,配置改为32或64
在链接器-输入-附加依赖项里面加上你对应 配置 平台 的lib文件名:
代码部分:
创建一个CPP文件,名字任取,包含以下代码:
#include
#include "ContrallNode.h"
extern "C" void GDN_EXPORT godot_gdnative_init(godot_gdnative_init_options *o) {
godot::Godot::gdnative_init(o);
}
extern "C" void GDN_EXPORT godot_gdnative_terminate(godot_gdnative_terminate_options *o) {
godot::Godot::gdnative_terminate(o);
}
extern "C" void GDN_EXPORT godot_nativescript_init(void *handle) {
godot::Godot::nativescript_init(handle);
register your class :
godot::register_class();
}
其中godot::register_class
ContrallNode为你想要注册(被godot/gdnative调用)类的名字,可以有多个,具体gdnative调用哪个会在gdnative里面指明
(我发现我control打错了,英语不过关(;´д`)ゞ)
然后就是在你头文件目录加入类的声明头文件在你的源文件目录加入对应类的实现的cpp:
然后生成,如果没有报错,那vs这边就解决啦。
vs生成完成后,你应该在你godot项目的bin文件夹里面看到对应生成的:
然后打开godot给我们想要使用这个类(被这个类扩展的结点添加一个GDNativeScript)的结点,类名写你想要用的类(且已经用register_class注册了)的类名,继承写对应继承:
然后再在你喜欢的位置创建一个gdnativelibrary的资源,注意!:后缀名要改为.gdnlib(它默认好像是.tres):
并在对应平台选择对应生成dll:
再点击刚才的创建的gdnative选择我们创建的gdnlib:
然后就大功告成,我们每次在vs里面改变了代码,就生成一次dll,然后由于路径没有变,godot的gdnative就会自动重新加载我们生成的新的dll。
1.可以试试在vs里面把文件移除,编译godot使用,然后再加入对应文件再编译使用。
2.重启godot