UE4時間相關函式

2021-08-15 07:40:38 字數 2605 閱讀 9880

在進行遊戲構建時,我們通常會用到和時間相關的邏輯,在此稍微做下小結。

當前ue4版本為4.15。

基本上遊戲引擎都是以tick為中心運轉的,表現在玩家面前就是幀率了,ue4也是如此。

在藍圖中要使用tick的話只要從灰色的tick上拖出呼叫就可以了,但是在c++中使用的時候需要注意的是,在預設的情況下,tick是關閉的,必須自己開啟才行。

1

primaryactortick

.bcanevertick

=true

;

另外由於tick本身是在每幀上呼叫的,出於效率考慮,要盡量避免往上新增複雜的邏輯,例如尋找1000以內的素數之類的。

在c++中使用時,如果遇到tick函式在編輯模式下不會執行的情況,這時可以嘗試對以下函式進行過載: 1

virtual

bool

shouldtickifviewportsonly()

const

override;

然後直接返回true。

1

2

3

4

bool

amyactor

::shouldtickifviewportsonly()

const

原始的過濾可能發生在如下的定義: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

void

aactor

::tickactor

(float

deltaseconds

,eleveltick

ticktype

,factortickfunction

&thistickfunction) } }

其中leveltick_viewportsonly是定義在enginetypes中的乙個列舉。

ue4內部對tick進行了分組管理,tickgroup之間按照先後順序進行呼叫,其在引擎內部的定義為:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

uenum

(blueprinttype

) enum

etickinggroup

;

在藍圖中有提供修改的介面,預設情況下的tickgroup是prephysics。

在c++中可以額外的新增tick函式,使得物件可以獲得額外的其他tickgroup的tick,但是在設計上意義並不是很大。

在同乙個tickgroup中的tick似乎是根據優先排程進行的,其順序近似隨機。在特殊的需求下,ue4還提供了前置tick actor的設定,它可以保證兩個actor之間的tick按照順序被呼叫。

全域性的時間調節也可以使用控制台指令開啟:

這個功能相對簡單,時間設定的細節需要到具體使用的時候調節為上。

Collision碰撞相關 UE4

原文 如何禁用角色的剛體碰撞檢測collision 禁用actor上所有component的碰撞 mycharacter setactorenablecollision false 設定以後,角色就可以忽視一切障礙物或者剛體來進行移動了,但是這樣會導致 addmovementinput 失效,set...

UE4 二維相關

scenecapture2d 類似相機元件 可將視口內的影象轉化為平面二維紋理資源渲染到 rendertarget rendertarget 可以被 material直接使用 例 做小地圖 scenecaptrue2d放置於人物頭頂用於獲取影象資源,scenecaptrue2d渲染到renderta...

UE4 間接光照快取

照亮環境 儘管lightmass可以生成靜態物件上的間接光照的光照貼圖,但像角色這樣的動態物件 也需要一種接收間接光照的方法。這個問題可以通過indirect lighting cache 間接光照快取 解決,它在構建光照時使用lightmass生成的樣本來計算動態物件在執行時的間接光照。eleme...