1. 程式人生 > >UE3常見技術問題

UE3常見技術問題



融合

崩潰現象

問:我們的遊戲發生以下錯誤後會出現永久崩潰現象:OutOfMemory(記憶體溢位)和 DriverInternalError(驅動器內部錯誤)。我們現在使用的是記憶體為 768MB 的 NVidia 視訊卡。還有其他問題嗎?

 :對於 Windows...

在您的根驅動器(通常是 C: 盤)的根目錄中 放置一個名為 Boot.ini 的檔案。如果您還沒有取消隱藏 Windows 系統檔案,那麼您將需要取消隱藏才能開啟它。如果您在您的 Boot.ini 檔案中設定了 /3Gb,那麼嘗試將其去除。

預設情況下,任何程序只有 2Gb:1Gb 供堆使用,1Gb 供棧使用(從 0x00000000 到 0x7FFFFFFF)。Kernel 保留了從 0x80000000 到 0xFFFFFFFF 的 2Gb。

新增 /3Gb 到您的 boot.ini 檔案中將堆擴充套件為 2Gb(同時減少 kernel 的虛擬記憶體)。視訊卡設定為 768Mb 會可以將您的虛擬記憶體減少為 1,280Mb(實際上要比 1,280Mb 還少一些,因為您的系統有多個驅動器,所以可以有一個供視訊卡使用)。即使您有 8Gb 的實體記憶體。

如果您是在 Vista 上執行,這裡也有供記憶體溢位崩潰現象使用的 Microsoft 修補程式:http://support.microsoft.com/kb/940105。

NVidia 會發現這個問題並相應地更新驅動器。請參閱最小指標頁面瞭解最新的要求。

虛幻指令碼

問:為什麼會將我的變數匯出到一個與我所宣告的大小寫不同的 .h 檔案?

 :假設是以下變數宣告:

class TestA extends Actor;
    native(Test);

var bool Foo;

和...

class TestB extends Actor;
    native(Test);

var bool FOO;

將屬性名儲存為 FName 值,儲存到區分大小寫字串的表格的索引中。使用相同的 FName 值儲存屬性 Foo 和 FOO 。引擎將使用它遇到的第一個大寫字母(例如, Foo

)。會將兩個屬性都匯出到 native 類標頭檔案中,例如 Foo

最簡單的解決方案是將所有出錯變數重新命名為與所使用的變數大小寫一致,例如,Foo

要在整個系統強制執行大小寫,請將該字串新增到 UnNames.h。

請參閱大小寫區分 FNames 和指令碼 (ue3bugs) 郵件列表主題了解更多資訊。

問:為什麼這一行程式碼在 defaultproperties(預設屬性)中不能正常工作。

  Thing = (X = 1.0, Y = 1.0)

 :該 defaultproperties(預設屬性)解析程式碼十分模糊。一般情況,您應該避免在 defaultproperties(預設屬性)中使用空格。

問:我有包含一個第一項為列舉值的 native 結構,而我將會得到杜撰出來的值或崩潰現象。

 :在這種情況下打包有一個已知問題,您應該避免將列舉值放在 native 結構中的第一項。

問:指令碼為什麼總是在一個 Perforce 中的全新同步後過期?

 :如果您的標題指令碼包(.U 檔案)會在倉庫內的 Development(開發)分支 前* 顯示,而沒有直接參與程式碼開發的美術人員及其他人員 *還沒有 遮住(過濾掉) Perforce 中的 Development(開發)分支,然後建立一個情況,在其中將指令碼包(.U 檔案)從倉庫中複製到 UnrealScript(.uc 檔案)前的本地機器。因為本地 UnrealScript(.uc 檔案)與指令碼包(.U 檔案)相比更新,所以該遊戲會認為該指令碼包(.U 檔案)過期並提示要編譯它們。不需要那些沒有直接參與程式碼開發的人員(例如,非程式設計師)同步到“Development(開發)”分支。這些使用者應該在 Perforce clientspec 中遮住(過濾)//depot/UnrealEngine3/Development/...。

問:重新編譯指令碼時,我會收到錯誤資訊“未解析類的無效引用”。

 :這意味著您要嘗試引用稍後在 ..Engine.ini 檔案的編輯包列表裡顯示的包中的一個類。

問:我有一個(非元件)物件類 FooClass 並新增一個對 Actor 類中的其中一個類的引用,同時使用 BEGIN OBJECT 語法在其 defaultproperties(預設屬性)中建立一個物件。但是當我將該 Actor 放置在關卡中時,指標會指代 FooClass 的預設物件,而不是一個新的例項。

 :這個問題是這個物件沒有進行‘深層複製’ - 它像您會用於貼圖或網格物體的一樣是淺層引用。所以當您放置 Actor 時,它將會使該引用指向 .u 檔案中的子物件,而不是建立一個新的例項。c 將關鍵字 'instanced' 新增到屬性中應該可以解決這個問題(與以前的語法 'editinline export' 不完全一樣)。那麼您的 Actor 類應該會有這樣一行:

var() instanced FooClass MyFoo;

問:我在結構屬性內部有一個 editinline export 屬性,而且在我重複或複製貼上這個 actor 時沒有對它進行深層複製。

 :不幸的是,現在它不支援這項功能,假設 .t3d 匯出器(在複製/貼上和克隆過程中使用的匯出器)會處理與深層複製的匯出物件相結合的匯出結構。

問:我可以使用 BEGIN OBJECT 語法在另一個 Actor 內部建立 Actor 嗎?

 :不可以。

問:我可以安全更改指令碼序列化結構的陣列內部嗎?

 :不可以,更改指令碼序列化的結構的陣列型別是不安全的。常見的解決方法是重新命名這個變數。

問:Kistmet SequenceAction 類看上去還沒使用處理器功能。為什麼?

 :這些類有一個供指定操作使用的處理器功能名稱( HandlerName ,在 SequenceAction.uc 中進行定義)。如果沒有設定這個名稱,那麼這個類名稱通常會自動生成一個(請參閱 UnSequence.cpp 中的 USequenceAction::Activated() 和 GetHandlerName )。例如,名為 SeqAct_DoSomething 的類會將它的 HandlerName 設定為 OnDoSomething 。

問:我可以宣告布林型的動態陣列嗎?

 :不可以。

問:我已經添加了一個新的 native 類,但是現在我收到了一個連線警告,內容為‘未解析的外部符號’。

 :當我新增一個新的 native 類時,您需要確保您在 .cpp 檔案某處添加了一個對應的 IMPLEMENT_CLASS 。

問:我剛剛建立了一個新的 C++ 專用(‘內部’)UObject 類,但是在我迭代所有 UClass 物件後,我無法找到它。

 :這是在建立諸如 UFactory 型別時的常見問題。您必須將新的類新增到 AUTO_INITIALIZE_REGISTRANTS_... 塊中的 ..Classes.h 檔案,然後在引擎發現這個類之前編譯 C++。這之後,通常會將其新增到生成該標頭檔案的這部分。

問:我認為在 C++ 和 UnrealScript 類定義中存在匹配不當的情況 - 有辦法可以檢查它嗎?

 :開啟 UnBuild.h 並將以下行:

#ifndef CHECK_NATIVE_CLASS_SIZES
#define CHECK_NATIVE_CLASS_SIZES 0
#endif

改變為:

#define CHECK_NATIVE_CLASS_SIZES 1

這樣它應該就會在您啟動程式時自動為您檢查這裡。

問:我可以在類的 cpptext 部分中新增一個新的變數嗎?

 :不可以! UnrealScript 和類的 C++ 定義必須精確匹配,而在 C++ 部分中新增變數會破壞精確匹配。您應該將其新增到指令碼類,然後使其自動生成包含新變數的 C++ 標頭檔案。

問:我只是向 native 類添加了一個新的指令碼變數,編譯指令碼並匯出標頭檔案後,我這邊發生了崩潰現象,我改怎麼辦?

 :此時,指令碼會認為您的類比 C++ 大,所以您必須使用新匯出的標頭檔案重新編譯 C++ 以便修復匹配不當的情況。 然後您將必須再次重新編譯指令碼,因為它第一次沒有完成編譯,但是它不會重新匯出標頭檔案。

C++

問:我如何將物件例項放置到 TArray 中?

 :如下所示:

UObject* SomeUObjectDerivedClass = new(SomeArray) SomeUObjectDerivedClass();

編譯

問:我已經將專案新增到依靠我的自定義遊戲專案的虛幻引擎 3 解決方案,而且我會收到有關預編譯的標頭檔案 (.pch)

 :請參閱建立自定義專案頁面如何建立依賴專案。

除錯

問:我如何瀏覽偵錯程式中的 FStrings、TArrays 或 FNames?

問:使用 UDE 進行除錯時,我收到諸如“已接收對 UpdateStack 的呼叫,但是棧不同步”的錯誤資訊。

 :這通常表示您的某些 .u 檔案是在沒有使用除錯資訊的情況下進行編譯的。

編輯器

問:我如何執行編輯器? 我只能看到 MyGame.exe。

 :它是 MyGame.exe 的一部分。您只需在末尾新增 'editor' 選項,如下所示:

mygame editor

問:我如何將資源從一個包移至另一個包?

 :在通用瀏覽器中右擊這個包,然後選擇 Rename(重新命名)。然後將這個新的 包/組 輸入到您想要將其移至的地方。移動資源時會在它原來的位置留下‘重定向器’。這樣,那些目前還沒有載入但是引用該資源的包會知道到哪裡能夠找到它的新位置。

問:當我在瀏覽器中重新命名一個物件時,我不可以使用與原來的物件相同的名稱建立一個新的物件。

 :當您重新命名一個物件時,它會建立一個可以從原位置指向新位置的 'Redirector' 物件。這樣任何現有的內容都可以找到資源。但是您不可以使 Redirector 與資源的名稱相同,這就是為什麼不允許建立名稱相同的物件的原因。您可以通過在 rename(重新命名)上勾選‘不建立 Redirector’框避免這個問題,但是您應該只可以在您確定沒有內容引用該物件的情況下進行這項操作。另一種修復它的方法是在常規的基礎上執行 'fixupredirects' 命令列開關。它會盡可能多地進行處理(所以它不要求勾選每個包中的每一項)。此外,如果沒有內容引用它,它會清理 __Trashcan 目錄中的包。

問:我在關卡編輯器或 kismet 中複製和貼上某個物件時 - 它應該會將新物件放置在以前物件的位置,然後移動新物件。

 :當您在編輯器中貼上時,它會為正在進行建立的新物件保留名稱。這樣,如果您貼上的是 2 個通過名稱互相引用的物件,那麼粘貼後情況仍然如此。但是因為每個物件必須有一個唯一的名稱,所以需要重新命名現有物件為新物件讓路。這樣,如果您所複製的物件名為 Foo。當您貼上它時,會將新物件命名為 Foo,並將現有的物件重新命名為諸如 Foo_1 這樣的名稱。

問:我如何在一個位於關卡中的 Prefab(預製)內部選擇單獨的 Actors?

 :在主要編輯器工具欄上,有一個標有 'P' 圖示可以啟動‘prefab lock(預製鎖定)’的按鈕。 啟用預製鎖定(預設情況)時,無法選擇預製的單獨元素。更確切地說,選擇一個單獨的預製 actor 就會選擇整個預製。

問:可以將反向縮放比例應用到一個物件以便可以橫穿某個軸‘翻轉’它嗎?

 :可以,引擎可以全面支援這項操作。

問:BSP“光照貼圖解析度屬性框”中的值代表什麼?

 :它代表每光照貼圖貼影象素的虛幻單位數。

問:在不需要鍵入名稱的情況下,我如何才能將一個 Actor 設定為指向其他 Actor?

 :您只需使用頂部的掛鎖按鈕‘鎖定’這個屬性視窗。然後在關卡中選擇 Actor,並使用屬性旁邊的綠色箭頭指定它。

問:在 AnimSet(動畫集)編輯器中,在 AnimSequence 選項卡下只可以對 AnimationCompressionAlgorithm 進行一次設定。

 :在 AnimSequence 選項卡中可見的屬性並不表示可以直接進行編輯。恰恰相反,修改序列的壓縮設定的正確方法是通過AnimationCompressionDialog(動畫壓縮對話方塊)

渲染

*問:使用特定法線貼圖時,我的遊戲中會顯示黑色正方體。

 :當您在螢幕上看到黑色正方體時,那是由於一些有問題的資料擾亂了後期特效系統造成的。這種現象最常見的原因是在您的法線貼圖中有 0 畫素。這會使畫素著色器中被 0 劃分,最終出現這樣的問題。確保您的法線貼圖其中沒有任何灰色區域。

問:我如何更改每個例項中骨架或靜態網格物體的材質呢?

 :您想要在 MeshComponent(網格物體元件)中修改 Materials(材質)陣列中對應的插槽。您在 StaticMesh Editor(靜態網格物體)或 AnimSet Viewer(動畫集檢視器)中設定的材質都是“預設值”,但是 Materials(材質)陣列允許您在每個例項中覆蓋這些預設值。

問:除非在無光照的情況下,否則半透明材質不會顯示。 為什麼?

 :自從變更列表 130935(第一個 Gemini QA 版本)開始已經刪除了對帶光照的半透明物體的支援。 在這個版本之前,使用的是深層剝離對其進行渲染,而且與 UE3 的其他渲染功能正交:畫素級光照和陰影、霧、光源函式、景深等等。但是,它的消耗太高以致於除了最簡單的場景外的任何地方都不實際。 與其繼續在 Gemini 中一個不切實際的程式碼路徑,我們倒不如決定通過忽略帶光照半透明物體材質簡化/優化不透明光照程式碼路徑。 我們計劃試驗支援可以不使用深度剝離在一個單獨的渲染中帶光照半透明物體的有限案例,但是還沒有安排計劃。

問:我放置了一個 decal(貼花),但是它沒有在編輯器或遊戲中顯示。 我缺少什麼步驟嗎?

 :將視口設定為‘帶光照’檢視模式(如果沒有光照貼花不會顯示)。 請確保貼花在與接收者相同的關卡中(或將其複製到每個關卡中以防需要映在多個關卡中的接收者)。 請確保 bAceeptsDecals 在接收的網格物體元件上的值為 TRUE(真)。 並檢查貼花是否具有合適的 bProjectsOnBSP/StaticMeshes/etc 霧設定。 此外,請確保貼花在其貼花過濾器中沒有任何內容。

問:模組化的陰影會遮住自發光材質,有什麼解決方法嗎?

 :這是模組化陰影的侷限性。 請參閱模組化陰影瞭解更多詳細資訊。

問:我已經認定動態陰影是造成我的遊戲中效能瓶頸的主要原因,我該從什麼地方開始?

 :關卡優化指南是開始的最合適地方。 此外,請務必檢視[[ShadowingReference][ShadowingReference]陰影引用]、模組化的陰影光照環境以及陰影緩衝過濾選項

問:為什麼建立靜態網格物體的光照貼圖後 Normal(法線)陰影沒有投射在它們上面?

 :這是因為 Normal(法線)陰影的侷限性。 考慮使用模組化陰影替換,這種方法會投射在所有幾何體上。

問:模組化陰影會投射整個幾何體。 我怎麼才能解決這個問題?

 :請參閱光照環境

問:這裡提供有關在 UE3 中除錯著色器的文件說明嗎?

 :請參閱著色器主頁

問:我收到了一個錯誤的編譯著色器,錯誤資訊為“無法繫結非可選的著色器引數 InvMaxTesselationLEvel_Zscale”,這是什麼意思?

 :有時,這會在周圍有一個陳舊的臨時著色器時發生。 進入 引擎/著色器,並確保沒有將檔案 Material.usf 和 VertexFactory.usf 標記為只讀。 您可能也想要嘗試刪除這些臨時檔案。

動畫

問:我正在使用 Matinee 在編輯器中製作 Actor 動畫,但是在遊戲中看上去好像沒有任何效果。

 :首先,檢查 Actor 類不是一個‘靜態’類。例如,PointLight 是一個靜態類,而且無法在執行時進行修改,但是 PointLightMovable 類可以修改。然後,檢查 Actor 的 Physics(物理)模式是否是 PHYS_Interpolating,如果不是它將不會按照 Matinee 操作通知它的內容進行操作。

問:我有一個骨架網格物體,其中在網格物體邊界盒外部製作某個骨骼的動畫。 但是隻要邊界在檢視範圍外,其中的物件就不會進行渲染,即使有一些骨骼仍然在檢視範圍內,

 :如果您使用 PhAT 為您的網格物體建立一個 PhysicsAsset,並將其指定為 SkeletalMeshComponent,那麼它會用該選項更新使用骨骼的碰撞形狀的邊界盒每一幀。因為這樣邊界就會更精確,網格物體通常應該正確地描畫。

問:我已經在某些骨骼上使用平移匯入了一個動畫,但是它好像並沒有應用於我的骨架。

 :預設情況下,bAnimRotationOnly 標記在 AnimSet(動畫集)屬性中進行設定。這會通知引擎在動畫資料中獲取骨骼的旋轉量,而不是從網格物體的參考姿勢中的平移量(適用於除根骨骼外的所有骨骼)。這很有用,因為它允許您在不同大小的骨架上播放相同的動畫,但是會丟棄動畫資料中的所有平移資訊。您可以關閉該標誌,您將會看到所應用的平移量,或者您可以使用 UseTranslationBoneNames 陣列指定應該從動畫資料中獲取它們的平移量的特定骨骼��

玩家物理

問:我的 pawn 無法始終如一地穿過他本應該適於穿過(使用 PHYS_Walking)的洞。

 :使用 PHYS_Walking 時,pawns 會通過 MaxStepHeight 走近超出障礙物。 有時,甚至微小的碰撞凹凸(就像可能由 BSP 分割引起的凹凸)也會使 pawn 走近。 為了保證可以持續具有穿越洞的技能,它應該比 pawn 高出 MaxStepHeight + MAXFLOORDIST(在 unphysic.h 中定義)。

碰撞

問:我怎樣使玩家可以將每個骨骼與骨架網格物體碰撞?

 :首先,您需要將 PhysicsAsset 指定為 SkeletalMeshComponent。當前,我們只支援針對於邊界盒圖元的邊界盒掃描曲面測試(供 Unrealplayer(虛幻玩家)物理使用),所以如果您想要阻擋玩家,您必須使用這些選項。然後,您需要勾選一些選項 - 首先,確保 Actor 上的 bCollideActors 和 bBlockActors 勾選的是 true(真),然後 SkeletalMeshComponent 上的 CollideActors、BlockActors 和 BlockNonZeroExtent 也勾選的是 true(真)。

問:為什麼 Touch() 指令碼事件沒有檢測到某些碰撞?

 :Touch() 事件僅適用於沒有互相阻擋的 Actors。而互相阻擋的 Actors 會接受 Bump() 事件。

請參閱碰撞參考指南頁面深入瞭解有關碰撞的參考資訊。

音訊

問:OpenAL 使用什麼座標系統?

 :請參閱音訊系統頁面獲取相關說明。

統計資料

問:有任何有關各種統計資料 xxx 命令結果的文件說明嗎?

 :統計資料命令輸出在統計資料描述中進行說明。

其他

問:虛幻引擎 3 可以在 Windows NT/2000 上執行嗎?

 :我們沒有使用 Windows 2000 / NT 上做過測試,不期待可以像支援使用者平臺一樣支援它,所以現在可能會有多箇中斷區域(以後會有更多引起的未能檢測到的中斷區域)。

問:我如何才能知道我使用的是哪一個版本的引擎?

 :您可以在您的 UnrealEngine3\Development\Src\Core\UnObjVer.cpp 版本中檢視引擎版本號,然後將其與 Perforce 中的版本歷史記錄進行對比。然後,檢視已經遷入到與您的引擎版本相同的版本中的變更列表,您很有可能具有您已經同步到的變更列表號。

*問:我如何才能找到定位畫面以外的視窗?以及我如何才能重置它的位置?

 :按下 SHIFT+ALT+SPACE+M。後來,您應該可以使用您的箭頭鍵將其推回原位。如果這不起作用,那麼嘗試在不點選的情況下移動滑鼠,然後它應該會顯示在螢幕上。

問:我如何才能捕獲引擎中的視訊?

 :您可以使用命令列上的 "-dumpmovie -benchmark",不���這樣您將獲取不到聲音。如果您的回放是確定性的(matinee 序列),那麼您可以單獨錄製它,儘管真實的遊戲過程片段錄製最好的方式是使用 HDTV 捕獲裝置/錄影機 以及真正功能強大的 SLI 機器。

問:我如何才能在遊戲中得到一張螢幕截圖?

 :您可以使用 "shot" 控制檯命令將當前的畫面擷取儲存為 .bmp 檔案。預設情況下,該命令的快捷鍵應該是 F9。它會將螢幕截圖放入在您的 ..Engine.ini 檔案中由 ScreenShotPath 選項指定的目錄中,它預設情況下是在您的遊戲目錄中名為“Screenshots(螢幕截圖)”的目錄。

問:玩遊戲時有調整 Actor 屬性的簡便方法嗎?

 :這裡會提供一些方法。一種方法是在 .uc 檔案中將屬性指定為 'config'。這意味著它們在 .ini 檔案中讀取它們的值,這樣設計師就可以在不需要程式設計師的情況下調整它們。另一種方法是將變數指定為可編輯屬性,然後在遊戲過程中使用 'editactor' 控制檯命令編輯屬性。如果您鍵入的是:

editactor class=myclass

在遊戲中,它會為類 'myclass' 的最近 Actor 彈出一個屬性視窗,然後您可以進行調整。使用特殊語法可以將 .uc 檔案中的變數新增到屬性頁面:"var FLOAT EnemyDetectionRadius" 將會出現在屬性視窗中,而 "var(Detection) FLOAT EnemyDetectionRadius" 將會出現在“Detection(檢測)”組下面的屬性視窗中。

最後,現在它使用 RemoteControl(遠端控制)視窗可以調整位於關卡中的 actors。

在玩遊戲過程中,您隨時可以按下 ctrl-esc(或者某些其他案件組合)再次獲取滑鼠游標,然後單擊 RemoteControl(遠端控制)中的 Actors 選項卡,並查詢您的 actor 例項。在選中的 actor 例項附近會出現一個邊界盒。接下來,您可以單擊 RemoteControl(遠端控制)視窗工具欄中的 Properties(屬性)圖示編輯 actor 的屬性(假設您使用的是上面描述的用於 editactor 命令的特殊語法)。注意:生成的 actors 當前不會出現在 RemoteControl(遠端控制)"Actors" 選項卡中,但是對於這些 actors,您仍然可以使用上面的 "editactor"。

請記住,在使用 editactor 命令或 RemoteControl(遠端控制)編輯屬性時,退出遊戲後會丟失其中進行的更改。您需要在退出之前從屬性視窗中將它們複製出來(使用 PropertyWindow(屬性視窗)工具欄複製更改,然後將它們貼上到一個安全的目標地址)。

問:我可以將 actor 作為子物件(通過 editinlinenew 或在程式碼中)嗎?

 :不可以! 這是因為子物件(在指令碼程式碼中)或通過編輯器中的 editinlinenew 屬性建立物件都不是使用合適的建立方法建立的。Actors  可以通過 Spawn(指令碼)和 SpawnActor (C++) 函式進行建立。所有 actors 都需要在世界內部進行建立,而不是在其他物件中建立,同時它們需要一個位置並需要將其新增到各種引擎結構,例如 octree 等等。子物件和 editinlinenew 物件沒有在其上面執行任何這樣的特殊程式碼。

融合

崩潰現象

問:我們的遊戲發生以下錯誤後會出現永久崩潰現象:OutOfMemory(記憶體溢位)和 DriverInternalError(驅動器內部錯誤)。我們現在使用的是記憶體為 768MB 的 NVidia 視訊卡。還有其他問題嗎?

 :對於 Windows...

在您的根驅動器(通常是 C: 盤)的根目錄中 放置一個名為 Boot.ini 的檔案。如果您還沒有取消隱藏 Windows 系統檔案,那麼您將需要取消隱藏才能開啟它。如果您在您的 Boot.ini 檔案中設定了 /3Gb,那麼嘗試將其去除。

預設情況下,任何程序只有 2Gb:1Gb 供堆使用,1Gb 供棧使用(從 0x00000000 到 0x7FFFFFFF)。Kernel 保留了從 0x80000000 到 0xFFFFFFFF 的 2Gb。

新增 /3Gb 到您的 boot.ini 檔案中將堆擴充套件為 2Gb(同時減少 kernel 的虛擬記憶體)。視訊卡設定為 768Mb 會可以將您的虛擬記憶體減少為 1,280Mb(實際上要比 1,280Mb 還少一些,因為您的系統有多個驅動器,所以可以有一個供視訊卡使用)。即使您有 8Gb 的實體記憶體。

如果您是在 Vista 上執行,這裡也有供記憶體溢位崩潰現象使用的 Microsoft 修補程式:http://support.microsoft.com/kb/940105。

NVidia 會發現這個問題並相應地更新驅動器。請參閱最小指標頁面瞭解最新的要求。

虛幻指令碼

問:為什麼會將我的變數匯出到一個與我所宣告的大小寫不同的 .h 檔案?

 :假設是以下變數宣告:

class TestA extends Actor;
    native(Test);

var bool Foo;

和...

class TestB extends Actor;
    native(Test);

var bool FOO;

將屬性名儲存為 FName 值,儲存到區分大小寫字串的表格的索引中。使用相同的 FName 值儲存屬性 Foo 和 FOO 。引擎將使用它遇到的第一個大寫字母(例如, Foo)。會將兩個屬性都匯出到 native 類標頭檔案中,例如 Foo

最簡單的解決方案是將所有出錯變數重新命名為與所使用的變數大小寫一致,例如,Foo

要在整個系統強制執行大小寫,請將該字串新增到 UnNames.h。

請參閱大小寫區分 FNames 和指令碼 (ue3bugs) 郵件列表主題了解更多資訊。

問:為什麼這一行程式碼在 defaultproperties(預設屬性)中不能正常工作。

  Thing = (X = 1.0, Y = 1.0)

 :該 defaultproperties(預設屬性)解析程式碼十分模糊。一般情況,您應該避免在 defaultproperties(預設屬性)中使用空格。

相關推薦

UE3常見技術問題

融合崩潰現象虛幻指令碼類C++編譯除錯編輯器渲染動畫玩家物理碰撞音訊統計資料其他 融合 崩潰現象 問:我們的遊戲發生以下錯誤後會出現永久崩潰現象:OutOfMemory(記憶體溢位)和 DriverInternalError(驅動器內部錯誤)。我們現在使用的是記憶體為

Unity3D常見技術筆試題

簡而言之,GPU的圖形(處理)流水線完成如下的工作:(並不一定是按照如下順序)  頂點處理:這階段GPU讀取描述3D圖形外觀的頂點資料並根據頂點資料確定3D圖形的形狀及位置關係,建立起3D圖形的骨架。在支援DX8和DX9規格的GPU中,這些工作由硬體實現的Vertex Shader(定點著色器)完成。  光

常見技術總結

首先來看看.net的發展中的各個階段的特性:NET 與C# 的每個版本釋出都是有一個“主題”。即:C#1.0託管程式碼→C#2.0泛型→C#3.0LINQ→C#4.0動態語言→C#4.5非同步程式設計  下面我來簡單的介紹一下非同步程式設計:非同步程式設計,在 .NET Fr

機器學習中,什麼是預測性維護,常見技術有哪些

本文要點: 學習預測性維護系統(PMS),監控未來的系統故障並提前安排維護時間表探討如何構建機器學習模型進行系統的預測性維護瞭解機器學習的處理步驟,如選擇模型以及用Auto-Encoder技術去除感測器噪聲瞭解如何訓練機器學習模型,並在WSO2複雜事件處理器產品中執行模型

PayPal商家整合常見技術問題

商家可以建立不同的PayPal按鈕,新增到自己的網頁上。使用者通過點選按鈕進入PayPal支付介面快速完成支付。通常使用的PayPal按鈕:立即購/訂閱/新增到購物車 Q1: 怎麼樣開啟PayPal賬戶可選? 1. 登入PayPal賬戶https://www.paypa

TCP協議常見技術細節及原理

一、TCP協議簡介 一般問到TCP協議的時候 最常見的是TCP連線建立和斷開的過程,也就是三次握手和四次揮手,兩張圖足矣。 1.1 三次握手 1.2 四次揮手 二、常見面試題 2.1 TCP連線階段 2.1.1 傳送序號和確認序號問題 例: TC

Javascript常見技術

    前臺技術容易上手,掌握主要賬務一些細碎的技術點會給開發帶來更大的便利。本文章持續更新,用於記錄常見的javascript技術點。 1、javascript面向物件中繼承實現 javascript面向物件中的繼承實現一般都使用到了建構函式和Prototype原型鏈,

協議欺騙攻擊技術常見種類簡析及防範

轉換 改變 實現 定向 要求 內網 容易 通過 加密 IP欺騙攻擊 IP欺騙技術就是通過偽造某臺主機的IP地址騙取特權從而進行攻擊的技術。許多應用程序認為如果數據包能夠使其自身沿著路由到達目的地,而且應答包也可以回到源地,那麽源IP地址一定是有效的,而這正是使源IP地址欺騙

常見的密碼技術與安全概念

dev 速度 bool 對象 改變 jpg 應該 htm 中心 本文同時發表在https://github.com/zhangyachen/zhangyachen.github.io/issues/27 總結下《圖解密碼技術》的核心點,自己忘的時候瞅一眼。 密碼 對稱密碼(

Openvz/KVM/Xen三種常見VPS虛擬化技術比較

更多 創建 半虛擬化 war 說明 文件 body 折騰 動態 mjj 剁機器時一般都會關心下超售情況,這裏簡要說明下各虛擬化技術超售能力。 KVM 不可超售資源:內存,硬盤空間 內存:KVM 在分配內存時是完全獨占的,也就是說母雞不能生出內存大於總物理內存的小雞。硬盤:

從零開始學習前端開發 — 7、常見瀏覽器兼容性問題及圖片整合技術

火狐 其中 針對 大小 webkit 最新 opacity屬性 引擎優化 pac 一、常見瀏覽器兼容性問題 1.雙倍浮動bug 描述:塊狀元素設置了float後,又設置了橫向的margin,在IE6下顯示的margin值要比設置的值大 解決方案: 給float的元素添加di

數據庫表常見分割技術-理論

spa 如果 技術 數據庫 div -s 特定 根據 優點 1、水平分割: 根據某些條件將數據放到二個夥多個堵路的表中。即按計量進行分割,不同的記錄 可以用分開保存,每個字表的列數相同。水平切割將表分為多個表。每個表包含 的列數相同,單身數據行更少。例如,可以將一個包含了十

常見數據庫容災技術的直觀比較

數據庫容災 存儲雙活 Alwayson 負載均衡 讀寫分離 當前是信息社會,數據庫的重要性不言而喻。本文從普通用戶而不是廠家(不談RPO、RTO、MDT、MTBF、MTTR等等專業術語)角度出發來審視和比較各種數據庫容災技術,希望能幫助廣大用戶在選購方案時少被忽悠、少走彎路、避免不必要的經

昊天善圈講述區塊鏈技術應用開發過程中幾種常見的區塊鏈系統類型:

玩遊戲 通過 遊戲 返利 應用 自定義 理財 區塊鏈 區塊鏈寵物系統 1.區塊鏈挖礦系統:手手機挖礦遊戲,挖得多賺得多,玩法自定義2.區塊鏈積分商城:多種積分獲取方式,積分可用於商城交易3.區塊鏈貨幣系統:自行發行數字貨幣,多種獲取貨幣方式,數字貨幣交易商城,打造數字貨幣全

微信域名防封技術、微信域名防封的常見問題解答

說我 常用 好的 有一個 分析 做的 不存在 其他 不用 能防多久?永久不紅麽?域名能防封多久?永久不被封嗎? 答:我就這麽說吧,永久不用不存在,是在吹牛逼。能防多久,在我們這裏購買的基本都是包月或者買流量走的,我們能保證的就是紅了在第一時間能處理,而且我們提供的方案要比市

最近整理的一些常見的面試題,面試大全,黑馬程式設計師面試寶典題庫---最新技術--篇

第八章 最新技術(評論區留言獲取原件) 一、 Redis 1. Redis 的特點?        Redis 是由義大利人 Salvatore Sanfilippo(網名: antirez)開發的一款記憶體快取記憶體資料庫。 Redis

Atitit 常見概念與技術 dom及其解析 目錄 1.1. Dom概念(文件物件模型(Document Object Model))是什麼 1 1.1.1. 節點 2 1.1.2. Node 層次

Atitit 常見概念與技術 dom及其解析   目錄 1.1. Dom概念(文件物件模型(Document Object Model))是什麼 1 1.1.1. 節點 2 1.1.2. Node 層次 2 1.1.3. 文件樹 3 2. Dom分類 3 2

LINUX相關技術面試題(命令,vi編輯器,常見面試問題)

LINUX相關技術面試題 基礎命令: 1.查詢檔案 find / -name filename.txt 根據名稱查詢/目錄下的filename.txt檔案。 2.檢視一個程式是否執行 ps –ef|grep tomcat 檢視所有有關tomcat的程序 3.終止執行緒

目前常見軟體保護技術概述

       軟體保護技術從廣義的角度來說,可以包括計算機軟體和系統的安全。目前大多數關於計算機的安全研究,主要是研究如何防止合法使用者和其資料被惡意客戶端程式所攻擊,以及如何設計和管理計算機系統來實現一個嚴密的安全系統。典型的方法是使用者限制客戶端程式的行為

內網滲透常見隧道技術(原)

內網滲透中隧道滲透技術(原)   埠轉發、埠對映、socks代理工具(msf的portfwd、socks4a和windows下的lcx.exe)的使用做一個記錄筆記   場景應用 埠轉發:用於目標機器對某埠進出進行了限制 埠對映:用於目標機器內網環境無法外網進行3389連線