Godot引擎Gdnative配置VisualStudio的方法 (c++)

更新:

4.0:

Godot4.0 GDExtension 配置VisualStudio方法_SCLchuck的博客-CSDN博客

4.1:

Godot4.1 GDExtension 配置VisualStudio方法梳理-CSDN博客

参考资料:

https://www.youtube.com/watch?v=Obeu2b2eN04&list=PLZ2NyOcFnfQOko5ZysZeGkH3bfw2UtbOK&index=2

GDNative C++示例 — Godot Engine (stable) 简体中文文档

推荐先看看第二个链接(官网关于gdnative配置c++的教程,大部分中文)

本文重点讲怎么配置gdnative - vs,不会讲具体讲gdnative改怎么用

1.官网下载godot-cpp

    下载链接:GitHub - godotengine/godot-cpp: C++ bindings for the Godot script API

    !注意 !  下载如果使用的是zip下载,一定要进入godot-header文件夹,把godot-header也下载了,并放在相应的位置

                      推荐使用递归克隆

     

2.使用scons命令生成godot-cpp的lib库

    如果没有scons命令的自行百度下载

    打开cmd使用cd命令进入godot-cpp对应的文件夹,使用如下指令:

    scons platform=<platform> generate_bindings=yes -j<x> bits=<nn> target=<mm>

    <platform>:对应的是相应的平台,比如我是windows就替换为windows

    <x>:对应的是编译时使用几个线程

    <nn>:对应的是系统位数,如果是64位请选择64

    <mm>:对应的是lib版本,如debug或者release

    生成好的lib文件应该现在就回出现在你godot-cpp文件夹里面的bin文件夹里面

3.创建godot项目,创建vs项目

    创建(选择)一个存放所有godot项目的文件夹,把刚才godot-cpp放进去,然后在里面再创建一个文件夹命名为

    你项目的名字,然后再在你刚才创建的名为你项目的文件夹里面创建godot项目和vs工程

    比如:我存放所有godot项目的文件夹为:D:\GodotPrj

               我的项目文件夹为:D:\GodotPrj\dodgeCreeps

               我的godot项目文件夹为:D:\GodotPrj\dodgeCreeps\dodgeCreeps

               我的vs工程文件夹为:D:\GodotPrj\dodgeCreeps\CPP_DLLMaking

4.配置vs

    打开你的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 <Godot.hpp>
#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::ContrallNode>();
}

     其中godot::register_class<godot::ContrallNode>();

     ContrallNode为你想要注册(被godot/gdnative调用)类的名字,可以有多个,具体gdnative调用哪个会在gdnative里面指明

    (我发现我control打错了,英语不过关(;´д`)ゞ)

     然后就是在你头文件目录加入类的声明头文件在你的源文件目录加入对应类的实现的cpp:

     

    然后生成,如果没有报错,那vs这边就解决啦。

5.配置godot引擎里的gdnative和gdnlib

    vs生成完成后,你应该在你godot项目的bin文件夹里面看到对应生成的:

        

    然后打开godot给我们想要使用这个类(被这个类扩展的结点添加一个GDNativeScript)的结点,类名写你想要用的类(且已经用register_class注册了)的类名,继承写对应继承

    

    然后再在你喜欢的位置创建一个gdnativelibrary的资源,注意!:后缀名要改为.gdnlib(它默认好像是.tres):

         

    并在对应平台选择对应生成dll:

    

    再点击刚才的创建的gdnative选择我们创建的gdnlib:

     

    然后就大功告成,我们每次在vs里面改变了代码,就生成一次dll,然后由于路径没有变,godot的gdnative就会自动重新加载我们生成的新的dll。

6.确认一切无误后任然可能出错

1.可以试试在vs里面把文件移除,编译godot使用,然后再加入对应文件再编译使用。

2.重启godot

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值