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

  • 相关阅读:
    SqlServer与Access之间的数据互导
    [转]半角<=>全角互转函数[JS版 VBS版]
    [文摘20070914]一个成功的博客必须知道的80个博客工具
    在javascript中获得由Ajax返回DataTable的列数和列名
    [转]获取xml节点值和属性值(兼容ie和firefox)
    [文摘20070920]网络战
    游标简单使用
    sql函数 得到 由 年月日时分秒+三位内的随机数 组成的随机数
    [转]ASP.NET 2.0 AJAX中Webservice调用方法示例 (包含参数类型为DataTable的WS方法)
    向页面中添加音乐或flash
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/4477250.html
Copyright © 2011-2022 走看看