ue4 動態增刪查改 actor,bp

2021-08-08 06:55:04 字數 1485 閱讀 2494

ue4.17

特殊說明:建立bp時,如果bp上隨手綁乙個cube,那麼生成到場景的actor只執行構造不執行beginplay,原因未知

atplayerpawn是c++類

直接動態建立actor

uworld* const world = getworld();

fvector v = fvector(0, 0, 0);

frotator r = frotator(0, 0, 0);

if (world)

建立乙個名為tplayerpawnbp的藍圖,繼承atplayerpawn

動態建立方法,3方法基本類似,隨便記錄下

1 可在執行時使用

fstringassetreference asset = "blueprint'/game/bp/tplayerpawnbp.tplayerpawnbp'";

uobject* itemobj = asset.resolveobject();

ublueprint* gen = cast(itemobj);

if (gen != null)

2 可在執行時使用

uobject* loadobj = staticloadobject(ublueprint::staticclass(), null, text("blueprint'/game/bp/tplayerpawnbp.tplayerpawnbp'"));

if (loadobj != nullptr)

3 先儲存藍圖類,然後執行時建立

.h中定義

uproperty(editanywhere, blueprintreadwrite, category = "n") 

tsubclassofdoorbpclass;

.cpp構造中

static constructorhelpers::fclassfinderdoorbpclassfinder(text("/game/bp/tplayerpawnbp"));

if (doorbpclassfinder.class != nullptr)

.cpp beginplay中

uworld* const world = getworld();

if (world)

4 執行時建立,大體思路都一樣,只要找到bp類就行,注意這個路徑有個_c

tsubclassofts = loadclass(null,text("blueprint'/game/bp/tplayerpawnbp.tplayerpawnbp_c'"));

getworld()->spawnactor(ts);

ue4 動態載入資源

動態載入非藍圖資源 如 聲音等使用loadobject 資源型別 nullptr,text 資源路徑引用 載入藍圖資源 獲得藍圖類 loadclass 藍圖的型別 nullptr,text 資源路徑引用 c 這裡需要注意就是資源的路徑需要額外加上 c 例如uclass result1 loadcla...

UE4之Delegate 動態單播

定義 define func concat va args 定義乙個動態單播,uht會根據body macro combine生成乙個file id line delegate巨集,這個函式留到後面說。先看func declare dynamic delegate 巨集定義 define func ...

UE4 動態陣列 TArray容器

為什麼使用ue4提供的容器類?如果你用過c 的stl庫,你就知道stl提供了各種各樣的容器 資料結構,使得你對處理很多資料的時候非常快捷高效。ue4同樣也提供了類似的庫,庫裡面的型別是以t開頭的,使用ue4提供的容器庫可以更好地實現跨平台。所以在ue4進行開發的時候我們很少去使用stl容器,更多時候...