转自: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
时间: 2024-11-15 03:01:48