转自:http://m.blog.csdn.net/blog/qweewqpkn/39932499
一.c++调用uc脚本中的函数
举例:
1. 在脚本MenuManager.uc文件中实现函数:
event LoadFrontend() { .............. }
这个脚本对应的c++文件为:MenuManager.cpp
2. 修改完uc脚本之后,我们要立刻进行编译脚本,方法如下:
打开cmd进入到unkgame.exe这个文件的目录,输入命令:udkgame.exe make -full -debug 进行编译。
3. 我们在c++调用这个uc中的这个函数的形式是:
UMenuManager::GetInstance().eventLoadFrontend();
先得到UMenuManger这个类的一个实例,然后调用函数,可以看到我们调用的函数形式变为了:event 与 LoadFrontend 组合的函数名。这应该是unreal的规定。
二.uc脚本调用C++中的函数
举例:
1. 在脚本MenuManager.uc 文件中声明:
native final function MyTestFunction() // (注:因为返回值是void,所以这里没有写出来)
2. 修改完uc脚本之后,我们要立刻进行编译脚本,方法如下:
打开cmd进入到unkgame.exe这个文件的目录,输入命令:udkgame.exe make -full -debug 进行编译。
3. 在MenuManager.uc对应的MenuManager.cpp文件中实现在uc脚本中声明的函数,形式如下:
void UMenuManager::MyTestFunction() { ....................//实现 }
4. 在任何uc脚本中就可以调用这个showLHmessage函数了,如下:
MenuMgrRef.MyTestFunction();
还是首先得到了实例,然后调用函数。
三.实现细节
1.用二来举例,讲解unreal实现的细节,为什么这样就实现了交互?
当我们在UC脚本调用C++函数的第二部完成后,即编译完UC脚本。此时会在我们指定的一个头文件.h中生成相关代码
(1)
class AUIGame { void MyTestFunction() .......... DECLARE_FUNCTION(execMyTestFunction) { P_FINISH; this->MyTestFunction(); } }
(3)
AUTOGENERATE_FUNCTION( AUIGame, -1 , execMyTestFuction)
(4)
FNativeFunctionLookup GLHGameAUIGameNatives[ ]=
{
MAP_NATIVE(AUIGame,execMyTestFunction)
}
注:这个数组的名字是G+游戏名+类名+Natives
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
2014-05-04 Android ndk下用AssetManager读取assets的资源
2014-05-04 cocos2d-x 2.2 资源更新AssetsManager例子代码
2014-05-04 cocos2d-x 使用Lua
2014-05-04 C++中rapidxml用法及例子