C++与UnrealScript脚本交互

转自: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

C++与UnrealScript脚本交互的相关文章

scaleform中ActionScript和UnrealScript的交互

scaleform是制作UI的好工具: 1.他可以解放程序员用代码控制的UI效果,例如平移,旋转和缩放都手到擒来.如果要做复杂的动画页面,单纯的靠代码来实现非常的麻烦. 2.他可以结合游戏引擎使用renderTarget的形式实现立体UI.这一点非常的酷.像老生常谈的<死亡空间>和最新的<高级战争>. 入正题,设置让ActionScript和UnrealScript实现交互. Flash: 1.引入PNG图片到库中.正确的设置其属性,删除后缀.我们引入一个按钮图片一个鼠标指针,用来

shell脚本交互:expect学习笔记及实例详解

最近项目需求,需要写一些shell脚本交互,管道不够用时,expect可以很好的实现脚本之间交互,搜索资料,发现网上好多文章都是转载的,觉得这篇文章还不错,所以简单修改之后拿过来和大家分享一下~ 1. expect是spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile 1.3 expect: 只有spawn执行的命令结果才会被expect捕捉到,因为spawn会启动一个进程,只有这个进程的相关信息才会被捕捉到,主要包括:标准输入的提示信息,Li

Shell脚本交互之:自动输入密码

Shell脚本交互之:自动输入密码 2016年04月09日 19:41:26 zhangjikuan 阅读数:58208 标签: Shell交互自动输入密码expect重定向管道 更多 个人分类: ARM/linux 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhangjikuan/article/details/51105166 平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,

Bash:- expect远程执行shell脚本交互

脚本执行时,需要输入交互"y",用expect可以实现交互输入过程: #!/usr/bin/expect -f set ipaddr [lindex $argv 0] set port "23000" spawn -noecho ssh -p $port [email protected]$ipaddr expect { -re "\]# " { send "bash /data/app/lhzs/public/script/check

【转】Shell脚本交互之:自动输入密码

平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,但是在she'll脚本运行过程中该如何交互实现自动输入密码呢? 下面总结三种实现方法: 一.重定向:用重定向方法实现交互的前提是指令需要有参数来指定密码输入方式,如ftp就有-i参数来指定使用标准输入来输入密码 shell用重定向作为标准输入的用法是:cmd<<delimiter ,shell 会将分界符delimiter之后直到下一个同样的分界符之前的内容作为输入 实现ftp自动登录

磁盘管理和脚本交互小练习

1.创建20G的文件系统,块大小2048,文件系统ext4,卷标TEST,要求此分区开机自动挂载至/tetsing目录,且默认挂载属性为acl 2.创建5G文件系统,卷标HUGE,要求此分区开机自动挂载至/mogdata,文件系统类型ext3 3.写一个脚本,完成如下功能: 利用此前学到的if语句完成 (1) 列出当前系统识别的所有磁盘设备 (2) 如果磁盘数量为1,则显示其磁盘空间信息 否则,显示最后一个磁盘上的空间使用信息. 3.写一个脚本,完成如下功能: 利用此前学到的if语句完成 (1)

Unity中CS脚本于JS脚本交互

这里需要注意的是被调用的脚本必须放在 "Standard Assets". "Pro Standard Assets" 和"Plugins" 这三个文件夹中的任何一个里,而调用它的脚本不能在一个目录文件夹中,否则无法编译通过,原因是Unity会最先编译这三个文件夹,"Editor"目录里的脚本稍后编译,其他的脚本最后编译(既 CS调用JS,CS脚本放在其他文件家中,JS脚本要放在 如上三个文件夹中先编译:JS调用CS,JS脚本

shell 脚本交互模式expect批量上传ssh密钥

#!/usr/bin/bash###批量上传密钥 V.1.0 by chenght 2019-03-29 password=12345qwertfor i in {2..254} ######批量获取ip地址do{ip=192.28.1.$iping -c1 -W1 $ip &>/dev/null ####记录成功的ipif [ $? = 0 ];thenecho "$ip">>ip.txt EOF 交互内容容易出错,请注意 /usr/bin/expect &

(转载)虚幻引擎3--12掌握虚幻技术UnrealScript 代理

第十二章- DELEGATES(代理) 12.1 –概述 12.2 - 声明代理(Delegate) 代理参数 默认行为 12.3 - 代理变量 12.4 - 传递Delegate(代理)给函数 12.5 - 代理和内存 12.6 -       UISCENE 和 UIOBJECT       DELEGATES(代理) UISCENE 代理 UIOBJECT 的代理 12.7 – 虚幻引擎3和虚幻竞技场3中的其它代理 AUDIOCOMPONENT GAMEINFO GAMEVIEWPORTC