zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【linux基础】linux系统日志设置相关记录
    【linux基础】mount: unknown filesystem type 'exfat'
    [c++]float assign
    第6章 移动语义和enable_if:6.1 完美转发
    第5章 技巧性基础:5.7 模板模板参数
    第5章 技巧性基础:5.6 变量模板
    第5章 技巧性基础:5.4 原生数组和字符串字面量的模板
    第5章 技巧性基础:5.3 this->的使用
    第5章 技巧性基础:5.2 零初始化
    第5章 技巧性基础:5.1 关键字typename
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/4477250.html
Copyright © 2011-2022 走看看