UE4 c++編程遇到的問題

1.使用socket方面的功能 需要在.build.cs中添加Networking模塊 但是添加后 使用#include "Networking.h" 還是編譯錯(cuò)誤 最后解決方法是 進(jìn)入ue4 刷新vs工程


image.png
  1. 使用類型為BlueprintNativeEvent 的UFUNCTION 需要在.h頭文件中 同時(shí)添加原始函數(shù)名 和 加_Implementation兩個(gè)聲明 在.cpp中只實(shí)現(xiàn)_Implementation 一個(gè)就可以了
image.png

3.簡(jiǎn)單的讀取xml方式
.build.cs中 添加XmlParser模塊 代碼中 #include "XmlParser.h"

include "XmlFile.h"

通過FXmlFile方式進(jìn)行讀取 例如:


image.png

4.委托的使用
簡(jiǎn)單說明 就是在A中聲明一個(gè)委托 在B中 對(duì)A中的委托進(jìn)行綁定 然后在A中需要的時(shí)候進(jìn)行委托調(diào)用
方法:在A中聲明委托
在uclass外面 進(jìn)行聲明 其中FConnectDelegate 就是委托的類型名 DECLARE_DELEGATE有多個(gè)版本 分別對(duì)應(yīng)的返回值 帶參數(shù)的委托
DECLARE_DELEGATE_OneParam(FConnectDelegate)
然后在A中 聲明變量 FConnectDelegate OnConnect;


image.png

在A中進(jìn)行調(diào)用OnConnect.ExecuteIfBound()

在B中進(jìn)行綁定


image.png

5.在UObject中獲得world
我是在寫插件中 在一個(gè)UObject的子類中需要使用SetTimer定時(shí)器 正常通過GetWorld() 返回的空
需要使用GetOuter()->GetWorld()的方式進(jìn)行獲取 同時(shí) 使用NewObject(創(chuàng)建UObject的指針)方式創(chuàng)建時(shí) 需要將actor傳入

6.多線程的簡(jiǎn)單使用
創(chuàng)建一個(gè)新的類 繼承自FRunnable 重寫他的Init Run Exit函數(shù)
使用時(shí) 會(huì)自動(dòng)調(diào)用Init 如果返回true 會(huì)自動(dòng)調(diào)用Run 退出時(shí) 會(huì)自動(dòng)調(diào)用Exit
下面是線程類


image.png

下面是調(diào)用方法
FRunnableThread *tempThread = FRunnableThread::Create(new ClientSocket(client), TEXT("RecvThread"));

7.查看變量值 使用VS調(diào)試的時(shí)候 有些變量會(huì)被編譯器優(yōu)化掉 看不到它的數(shù)值 這時(shí)候 將編譯配置改成DebugGameEditor就可以了
另外可以通過vsstudio 調(diào)試/附加到進(jìn)程 來(lái)進(jìn)行調(diào)試

8.c++ 中獲得 umg widget的position
獲得本地position 可以通過widget->CachedGeometry().Position
獲得世界坐標(biāo) 需要通過以下代碼 其中positionInScreen 是ui在實(shí)際窗口中的坐標(biāo)位置
positionInViewPort 是坐標(biāo)在設(shè)計(jì)窗口中的位置
FVector2D positionInScreen;
FVector2D positionInViewPort;
USlateBlueprintLibrary::AbsoluteToViewport(GetWorld(), widget->GetCachedGeometry().AbsolutePosition, positionInScreen, positionInViewPort);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容