无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

TomLooman_ActionRoguelike_第六章調(diào)試工具

2023-08-09 18:48 作者:別叫我小紅  | 我要投稿


該專欄用于保存對TomLooman的ActionRoguelike項目的學習筆記,學習過程中的思考與記錄不一定準確。


教程參考:https://github.com/tomlooman/ActionRoguelike

基于UE5.0的項目實現(xiàn):https://github.com/CarolBaggins2023/TomLooman_ActionRoguelike_Tutorial

2023_08_02

調(diào)試工具:調(diào)試C++和藍圖、相機的變化和十字準星、用于主動檢測的錯誤的assert

?

在SExplosiveBarrel.cpp中實現(xiàn)了爆炸時打印調(diào)試信息,包括打印在OutputLog里和打印在3D世界中。

UE_LOG的函數(shù)接口為UE_LOG(CategoryName, Verbosity, Format, ...),其中CategoryName是打印的類別,Verbosity是信息的詳細程度,F(xiàn)ormat是日志的消息內(nèi)容。

在UE中,輸出字符串要加TEXT(),其作用是保證在不同環(huán)境下字符串仍能輸出正確。需要注意的是,%s的內(nèi)容不能是FString,而要是const wchar_t*,可以通過在FString前加*

得到(如第二句)。

UE_LOG的輸出效果如下圖所示,

DrawDebugString能將調(diào)試信息直接打印在3D世界中,F(xiàn)String類型的變可由FString::Printf(TEXT())創(chuàng)建。

DrawDebugString

的輸出效果如下,由于我們代碼中調(diào)試信息的輸出位置是Hit.ImpactPoint,所以調(diào)試信息在爆炸點出現(xiàn)。

?

在藍圖中設(shè)置break point的方法

未運行時

運行中觸發(fā)斷點時

藍圖中的斷點也可以被disable

?

?

Camera在Character正后方時,Character會擋住一定的視野,所以我們想把Camera的位置調(diào)整到偏右側(cè)。

不能像下面那樣直接調(diào)整Camera,因為這樣會讓Camera和SpringArm的相對位置錯誤,導致出現(xiàn)Camera穿墻的情況。

正確的做法是在SpringArm中調(diào)整Camera的位置,如下

?

只是單純地調(diào)整Camera的位置的話,Character射出的子彈不再落在屏幕中心,而是會落在偏左的位置。原因和解決方案下面講。

現(xiàn)在我們先在屏幕上添加一個準心。方法是創(chuàng)建一個WidgetComponent(控件組件)的藍圖類,添加一個Panel和一個Image(Image的初始窗臺是白色矩形),并讓Image位于Panel的中心。

Widget組件允許我們在游戲場景中用Unreal Motion Graphics(UMG,虛幻示意圖形)來創(chuàng)建3D UI,可以與之交互。

然后在Character的藍圖中將這個Widget顯示在屏幕上,

效果如下,

?

?

UE中的Assertion(斷言)能夠提醒我們哪里的程序出現(xiàn)了問題。Assertion相當于用if語句判斷指針是否非空,但用if語句判斷后要顯式地讓代碼停止運行或中斷程序,而Assertion會根據(jù)使用的斷言自動決定是繼續(xù)程序還是中斷程序。

UE中的Assertion包括check、verify和ensure(ensure在觸發(fā)斷言時不會終止程序,而是通知崩潰報告器,此時編輯器會卡頓一段時間)。

TomLooman_ActionRoguelike_第六章調(diào)試工具的評論 (共 條)

分享到微博請遵守國家法律
句容市| 广德县| 新安县| 依兰县| 诏安县| 安宁市| 纳雍县| 石林| 元朗区| 宁蒗| 阳山县| 高密市| 大洼县| 东莞市| 灵宝市| 宾阳县| 仁怀市| 新平| 百色市| 丰顺县| 波密县| 新疆| 石屏县| 叙永县| 公主岭市| 宣城市| 庆元县| 延庆县| 习水县| 龙州县| 合阳县| 澎湖县| 丹东市| 青田县| 罗源县| 桓台县| 阜阳市| 凉城县| 肇庆市| 沈阳市| 洮南市|