1、Actor的EndPlay事件在哪些時候會呼叫?
EndPlay - 在數個地方呼叫,保證 Actor 的生命走向終點,在游戲程序中,如包含流關卡的
Actor 被卸載,Destroy 將發射此項和關卡過渡,呼叫 EndPlay 的全部情形:
(1)對 Destroy 顯式呼叫
(2)Play in Editor 終結
(3)關卡過渡(無縫行程或加載地圖) 包含 Actor 的流關卡被卸載
(4)Actor 的生命期已過
(5)應用程式關閉(全部 Actor 被銷毀)
Actor 生命周期
2、BlueprintImplementableEvent和BlueprintNativeEvent之間有什么區別?
BlueprintImplementableEvent和BluuprintNativeEvent兩者都是函式標記,用于修飾
函式的,
BlueprintImplementableEvent:在C++可以宣告函式(不能定義,藍圖重寫),
在C++里呼叫該函式,藍圖重寫實作該函式
BlueprintNativeEvent:在C++可以宣告和定義函式,在C++里呼叫該函式,藍圖重寫
實作該函式(藍圖可以重寫或不重寫C++父類函式)
使用方法:
UFUNCTION(BlueprintImplementableEvent) void TestA();
UFUNCTION(BlueprintNativeEvent) void TestB();
UE4函式標記BlueprintImplementableEvent和BlueprintNativeEvent區別
3、BlueprintPure在什么時候使用?
BlueprintPure的特點是在C++和藍圖中都可以呼叫,但是其修飾的函式必須有函式回傳值或
函式引數輸出,否則會編譯失敗,被宣告的函式不會以任何方式擁有物件,并且可以在藍圖
或級別藍圖圖示中執行,
因此,BlueprintPurs修飾的函式,主要用于(1)數學中的“+、-、*、/”操作 (數值處理),
(2)變數獲取節點(獲取變數中的部分資料)
UE4入門-常見的宏-UFUNCTION
UE4的BlueprintPure用法
4、UE4的藍圖中對于Foreach等回圈采用的是類似并行的方式,試實作一個串行的方法,
首先需要了解并行和串行的區別,
并行通訊:同一時刻,可以一次性執行多步,
串行通訊:同一時刻,只能一步一步的執行,
for(int i=0;i<10;i++);//所以我自己寫個回圈,不開多執行緒應該就可以了吧,畢竟沒有
找到標準答案,只能自己猜測了,求大佬,教教我,
5、如何解決子彈穿墻問題?
如果采用的是射線檢測的話,LineTracebyChannel函式只會回傳首個命中物件,
但為了防止真出現子彈穿墻問題,
我們可以讓LineTracebyChannel只要擊中一個物體就會停止射線檢測,
如果采用的是為子彈單獨制作成一個物體的話,
在射擊時,只要將墻體和子彈的碰撞屬性設為Block,便會阻止子彈繼續前進,
UE4-(藍圖)第二十一課射線
UE4碰撞規則詳解
6、UE4對USTRUCT的記憶體會自動管理嗎?
不會,
只有使用UPROPERTY宏標記的USTRUCT才能被計入垃圾回收,
UE4入門-常見的宏-UPROPERTY
UE4入門-常見的宏-USTRUCT
7、Blueprintable和BlueprintType的意義
Blueprintable:將使用該宏標志的類公開為創建藍圖的可接受基類(類似于:那些base類),
其默認為NotBlueprintable,即不可以創建藍圖子類,
BlueprintType:將使用該宏標志的類公開為可用于藍圖中變數的型別(類似于:int),
與之對應的有NotBlueprintType,即不可以在藍圖中創建該型別的變數,
UE4入門-常見的宏-UCLASS
8、UE4 入門宏
UE4中的宏Macro,和函式比較相似,都是對一些功能演算法進行了封裝,都有一個輸入點和輸出點,呼叫方法也類似,
宏與函式的區別在于:
(1)宏是直接展開,即直接將宏的代碼直接復制替換到所有使用當前宏的地方,這點類似于c++中的宏,而函式則是需要編譯,
(2)宏運行時無物體,函式運行時有物體,
(3)宏有多個入口Exec多個出口Exec,函式只有一個入口Exec一個出口Exec,
(4)宏可以使用Delay,函式不可以使用Delay,
(5)宏不可以復制,函式可以復制,
(6)宏的引數可以使用“Exec”型別,函式不可以
宏的特點:
(1)類的成員函式可以被子類繼承,但宏不會被繼承,子類無法使用父類的宏
(2)可以自定義宏庫,供所有藍圖使用
(3)宏特別適合于制作控制流,如引擎自帶的FilpFlop,
(4)宏中定義區域變數,只能使用基本資料型別,不能使用型別別,
宏 :執行快,功能更強,但占據空間多,安全性差
函式:執行較慢,占空間少,安全性高
個人總結,優先用函式,少用宏
UE4藍圖——型別 宏(Macro)
[UE4]宏
9、UE4的游戲框架包含哪些內容?
(1)使用玩家輸入或者AI邏輯控制Pawns
Controller是一個負責指導Pawn的Actor,它們通常有兩種版本,AIController和PlayerController,控制器可以“擁有”一個Pawn來控制它,
PlayerController是Pawn與玩家控制他之間的介面,其代表了玩家的意志,
AIController是一個可以控制Pawn的模擬意志,
(2)代表世界的玩家、朋友、敵人
Pawn是一個actor,Pawn可以被Controller持有,他們可以接收輸入,可以做很多游戲邏輯,
Character是一個人形風格的Pawn,繼承自Pawn,他默認自帶一個膠囊體碰撞器和角色運動組件,他可以做到基本的人形移動,他可以平滑的復制移動并且有一些影片相關的功能,
(3)向玩家展現資訊
HUD是一個抬頭顯示幕,可以顯示健康、彈藥等,每個PlayerController通常有一個,
Camera相當于玩家的眼球并且管理他的行為,每個PlayerController通常也有其中一個,
(4)設定與追蹤游戲的規則
游戲模式(GameMode)游戲的概念分為兩類,GameMode與GameState是游戲的定義,包括像游戲規則的事情,勝利的條件,他只存在于服務器上,他通常沒有太多的資料變化,也沒有客戶端需要了解的瞬態資料,
游戲狀態(GameState)包括像關聯球員名單得分,那里的作品是一盤棋,或者游戲中的任務完成串列,GameState存在于所有服務器與客戶端上,可自由復制使所有計算機保持最新狀態,
玩家狀態(PlayerState)是游戲參與者的狀態,PlayerState包含玩家姓名,得分,類似MOBA的匹配等級,所有玩家的PlayerState存在于所有機器上,可以自由復制保持同步,
UE4-游戲框架——GameMode、GameState、PlayerState、Controller、Pawn
10、切換關卡的命令是什么?
一般地圖比較小,且關卡各自獨立的時候,
使用openLevel,通過輸入一個LevelName來切換關卡,
當在開放世界,即地圖特別大的時候,我們會將多個關卡拼接為一個大世界地圖, 然后采用
無縫切換地圖的方式,來加載當前的地圖,
此時有三個用來驅動轉移的主要函式:
UEngine::Browse、
UWorld::ServerTravel、
APlayerController::ClientTravel,
Unreal Engine4關卡切換
《Exploring in UE4》流關卡與無縫地圖切換[經驗總結]
多人游戲中的關卡切換
11、UE4的模塊系統
首先:UE4中模塊分為5部分:
Developer主要是跨平臺工具,Merge和一些底層的工具,
Editor主要是編輯器相關的代碼
Programs主要是獨立于引擎,但大多數又依賴引擎的工具,UBT就在這里
ThirdParty第三方庫或者插件
RunTime是主要的Gameplay等等和游戲相關的代碼了,
UE4模塊系統詳解
UE4中的模塊(module)介紹
12、簡單介紹一下物件系統(UObject類)和型別系統(UClass類),
UObject類為物件系統的基類,該類的主要作用是存放物件的名字、標記資訊(ObjectFlags)、
型別資訊(ClassPrivate)、Outer物件和在物件管理陣列中的索引,
UClass類主要用于描述C++中的類資訊,在UE4在UClass實體不僅僅用于描述C++(Native)類,
也用來描述Blueprint生成的類,
UE4物件系統_UObject&UClass
13、Core模塊包含了哪些基礎類,
Core模塊下有很多檔案夾:
Containers 包含各種C++容器類:Array、List、Map、Queue、Set等等
Delegates 包含各種代理宣告的宏:DECLARE_DELEGATE、DECLARE_MULTICAST_DELEGATE、DECLARE_EVENT等等
Logging 包含日志功能類和宏:UE_LOG、ELogVerbosity等等
Math 包含各種數學函式和結構:Box、Color、Matrix、Quat、Range、Rotator、Vector、
UnrealMath等等
【UE4源代碼觀察】觀察Core模塊
14、RHI模塊
RHI即RenderHardwareInterface, 即渲染硬體介面, 是UE為實作跨平臺而實作的一套API.
每個RHI介面都為OpenGL, Vulkan, DX11等做了不同的實作. 在引擎初始化時使用的繪圖
介面就已經確定, 引擎就可以確定RHI所使用介面的版本.
【UE4源代碼觀察】觀察 RHI、D3D11RHI、RenderCore 這三個模塊的依賴關系
15、Engine模塊
Engine模塊主要用于定義actor和組件,同時實作了游戲的基本框架,
16、UMG 模塊
UMG模塊是虛幻運動圖形的簡稱,
主要用到以下幾種檔案:
1、Blueprint( User Inteface-Blueprint) 也就是常說的UMG,是我們常用的UI工程檔案
2、Font(字體資源拖入Content Browser自動生成)字體檔案
3、Texture (PNG資源拖進來可以自動生成) 圖片資源檔案
4、Material 材質檔案,可用于UI材質或者mesh材質
5、Actor(Blueprint Class-Actor)可以擺放到場景中的檔案型別,用于制作3DUI
UE4入門之路(UI篇):UMG系統介紹
ue4之UMG
17、UE4中的型別系統
UE4的宏可以分為四種:UCLASS、USTRUCT、UFUNCTION、UPROPERTY,
其中: UCLASS用于修飾類,
USTRUCT用于修飾結構體,
UFUNCTION用于修飾函式,
UPROPERTY用于修飾變數,
UE4型別系統、語言修飾符和元資料
UE4入門-常見的宏-UCLASS
UE4入門-常見的宏-UPROPERTY
UE4入門-常見的宏-USTRUCT
UE4入門-常見的宏-UFUNCTION
問題參考:
UE4基礎總結
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294305.html
標籤:其他
下一篇:python制作彈球小游戲
