UE4 C (14) 常用函式

2021-10-09 13:42:22 字數 4005 閱讀 8425

10/19/2020

11/09/2020

生成actor

載入非同步載入資源

尋找actor

遍歷actor

判斷型別

actor下的元件查詢

生成計時器

總結

//文字元件

createdefaultsubobject

(text

("countdownnumber"))

;//攝像機元件

fpscameracomponent = createdefaultsubobject

(text

("firstpersoncamera"))

;//球形碰撞元件

collisioncomponent = createdefaultsubobject

(text

("spherecomponent"))

;//....

uobject* instobject = newobject

(this

, blueobject-

>generatedclass)

;

//方式1

getworld()

->spawnactor

(acubereplicate::

staticclass()

,getactorlocation()

+ fvector::rightvector*

300.0f

, fquat::identity.

rotator()

);//方式2

getworld()

->spawnactor

(fireeffectclass,

getactortransform()

);

通常載入資源分為兩部分,一部分資源是否在記憶體中,如果不在需要先從磁碟載入(loadclass/loadobject),如果在記憶體中可以直接找到資源(findobject/findclass)

動態載入意味著不在建構函式中宣告靜態的

//方法1:

//在記憶體中找尋資源!!

ustaticmesh* blockmesh = findobject

(null

,text

("staticmesh'/game/startercontent/shapes/shape_cube.shape_cube'"))

;//載入資源,從硬碟載入到記憶體中if(

!blockmesh)

//特殊情況 對藍圖動態載入

//載入藍圖類 --- class

uclass* fireeffectclass = loadclass

(null

,text

("blueprint'/game/thirdpersoncpp/blueprints/unreplicatefire.unreplicatefire_c'"))

;//本藍圖已經由編譯器建立好了!

loadclass不能寫ublueprint,必須寫相對應的父類,比如aactor

//靜態載入 <--- 放在建構函式中

static constructorhelpers::fobjectfinder

spherevisualasset

(text

("/game/startercontent/shapes/shape_sphere.shape_sphere"))

;//載入藍圖不需要字尾加_c

static constructorhelpers::fclassfinder

unitselector

(text

("blueprint'/game/myproject/myblueprint.myblueprint'"))

; tsubclassof unitselectorclass = unitselector.class

fstreamablemanager* wealthloader =

new fstreamablemanager;

//非同步載入,新增紋理資源到texturepath並且完成後執行委託函式

//wealthhandle 儲存了資源資料

wealthhandle = wealthloader-

>

requestasyncload

(texturepath,

fstreamabledelegate::

createuobject

(this

,&awealthactor::streamablemanagerloadcomplete));

//獲取資源

tarray> outobjects;

wealthhandle-

>

getloadedassets

(outobjects)

;

#include

"kismet/gameplaystatics.h"

tarray>actarray;

ugameplaystatics::

getallactorsofclass

(getworld()

, arpcactor::

staticclass()

, actarray)

;//世界 + 類名 + 儲存容器

#include

"engineutils.h"

class

acollectables

;for

(tactoriteratorit(

getworld()

); it;

++it)

for

(int i =

0; i < actarray.

num();

++i)

aactor* otheractor;

class

acollectables;if

(otheractor-

>isa()

)

//dynamic cast an object type-safe

if(cast

(otheractor)

!=null

)

if

(gengine)

}

#include

"timermanager.h"

//declare_delegate(ftimerdelegate); 宣告委託 ftimerdelegate

ftimerhandle updatetimerhandle;

//定時器儲存位址

//定義乙個委託,即當前類中的updatetimer函式委託給timermanager呼叫

ftimerdelegate updatetimerdelegate = ftimerdelegate::

createuobject

(this

,&afireeffectactor::updatetimer)

;//設定乙個定時器,每一秒中呼叫ftimerdelegate函式

getworld()

->

gettimermanager()

.settimer

(updatetimerhandle, updatetimerdelegate,

1.0f

,true);

//委託函式

voidupdatetimer()

無非就是構造,增減查,轉換。

UE4 Python呼叫c 指令碼函式

1 新建乙個c 工程,建立乙個testpy指令碼,父類見下圖 件 pragma once include coreminimal.h include kismet blueprintfunctionlibrary.h include testpy.generated.h uclass class c...

UE4 C 的const類成員函式

我們知道,在c 中,若乙個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤。例如 const char blank blank n 錯誤 要宣告乙個const型別的類成員函式,只需要在成員函式引數列表後加上關鍵字const,例如 pragma once include includ...

ue4材質節點怎麼用 ue4材質常用節點

ue4的材質表面上看起來很簡單,可是到了用的時候卻總是沒有辦法實現好的效果。所以特意對文件進行閱讀,初步了解了一下主要知識點。當前使用的ue4版本 4.8.0。ue4中的材質有很多用途,可以用於光照 延遲渲染 粒子系統等等。由於暫時不會用到,目前只做了最基礎的材質使用的研究,也就是說是materia...