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
              {
              }
      }  
}
相關文章
相關標籤/搜索