1:编写虚幻引擎中的UC和C++代码

  我要研究基于UDK配置本身的编译环境。在前边根据UDN的文档能够配置纯新的效仿ExampleGame的环境。可是面临着两个问题:网络

  1.若是使用纯新的工程,在前面基于UDKGame的config配置的内容将会面临大量的更改。函数

  A.这甚至会影响到咱们之前的光照环境等美术环节。oop

  B. 基于Mobile的按钮配置神奇的不会显现,FramworkGameui

  所以我要解决的问题之一是,效仿UTGame在config中加入本身的游戏类型。从纯脚本的方式来看仅是在DefaultEngine.下EditPackages=ArtGame便可。开启UDK.exe便可以编译之。spa

  从要编译C++的角度来看在EditScript中添加NativeScriptPackages为当前要编译的包便可。code

 

  抛开更底层的引擎层,执行UDKGame的环境至少会包含如下底层类:blog

  GameFramework:包含了MobileInputZone。 包含Native游戏

  UDKBase:SimpleGame等基础类。 包含Nativeip

  UTGame: 这是构建在UDKBase之上的层,纯UnrealScript。文档

  

  2.生成的编译

  虚幻有一套基于UnrealBuildTool的编译过程,这套流程中须要用C#在其配置环境中配置注册本身的Native代码。我能够在这里面添加而且让本身的包经过Native编译经过。然而下面的问题3是目前让我纠结的地方。

 

 

  3.怎么像UTGame同样在UDK目录下进行编译

  个人理解是这样的,抛开本来UDK给的纯脚本在DefaultEngine中添加本身的UnrealScript包方式,就像上边的描述。扩展UC是很是简单的,本来的引擎仅是须要链接架设的UC虚拟机。

  可是C++便不一样,他会潜入到引擎中。编译了本身的native code会改变引擎。

  我有两套解决方案实现这个过程:

  

  A.将本身的ArtGame像UTGame同样设置成纯净的UC code。更改UDKBase层级对其进行Native修改便可。编译的时候使用UDKGame进行便可。暴露出来一些native函数调用被ArtGame所使用。

  这样我就会像使用UDK同样使用UE3.

class ArtPlayerController extends GamePlayerController
    config(Game);

//使用Native返回字符串
exec function TestNative()
{
    local string s;
    local ArtSocketObject UCObject;

    UCObject=new class'ArtSocketObject';
    
    s=UCObject.NativeRetString();

    ClientMessage(s);
}
class ArtSocketObject extends Object Native(Socket);

native function string  NativeRetString();

   上面的过程是通常的native code调用方法。

EngineLoop
{
              UDKGame
              {
                        UDKBase()
                        UTGame()
               }

              ArtGame
              {
                        UDKBase()
                        ArtGameUC()
              }
}

 

 

  B.然而上述过程有一个巨大的风险,UDKBase代码量庞大,改动起来很是的危险。而且对于频繁修改的工程项目是很是难以控制的。尤为是咱们还要解决棘手的网络层,将会面临棘手的大量数据定义和传输。

  又回归到问题的本质了,怎么在UDKGame的层级添加本身的代码嘞?

EngineLoop
{
      UDKGame
      {
              UTGame
              {
              }  

              ArtGame
              {
              }
      }  
}
相关文章
相关标签/搜索