[Unreal][C++] ํƒ€์ด๋จธ

2023. 8. 20. 16:05ยท๐Ÿ“ Game/โœ Unreal

1. ํƒ€์ด๋จธ

ํƒ€์ด๋จธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์‹œ๊ฐ„๋งˆ๋‹ค ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋™์ž‘์ด ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ Tick ํ•จ์ˆ˜์—์„œ DeltaTime ๊ฐ’์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€์ •ํ•œ ๋™์ž‘์ด ์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ํŠน์ •ํ•œ ์‹œ๊ฐ„์—๋งŒ ๋ช‡ ๋ฒˆ ์‹คํ–‰๋˜๊ฑฐ๋‚˜, ํ…€์ด 1์ดˆ๋ฅผ ๋„˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด Tick ํ•จ์ˆ˜๋ณด๋‹ค ํƒ€์ด๋จธ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ๊ธ€๋กœ๋ฒŒ TimerManager์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ ๊ฒŒ์ž„ ์ธ์Šคํ„ด์Šค ์˜ค๋ธŒ์ ํŠธ์™€ ๊ฐ ์›”๋“œ์— ์กด์žฌํ•œ๋‹ค.
  • TimerManager๋ฅผ ํ†ตํ•ด ํƒ€์ด๋จธ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

2. ์‚ฌ์šฉ

1) ์‚ฌ์šฉ

SetTimer ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋”œ๋ ˆ์ด ํ›„ ํ•จ์ˆ˜๋‚˜ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

GetWorldTimerManager().SetTimer(
	FTimerHandle & InOutHandle,
	UserClass * InObj,
	Function,
	float InRate,
	bool InbLoop = false,
	float InFirstDelay = -1.f);
  • InOutHandle: ํƒ€์ด๋จธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ ์ผ์‹œ์ •์ง€, ์žฌ๊ฐœ, ์ทจ์†Œ ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค
  • Function: ํƒ€์ด๋จธ๊ฐ€ ๋Œ์•„๊ฐ€๋ฉด์„œ ํ˜ธ์ถœ๋  ํ•จ์ˆ˜์ด๋‹ค.

 

2) ํ•ด์ œ

SetTimer ํ•จ์ˆ˜์— ์ „๋‹ฌํ•œ ํƒ€์ด๋จธ ํ•ธ๋“ค์„ ClearTimer ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋ฉด ํƒ€์ด๋จธ๋ฅผ ํ•ด์ œ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๊ธฐ์กด์˜ ํƒ€์ด๋จธ ํ•ธ๋“ค์€ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ƒํƒœ๊ฐ€ ๋˜๋ฉฐ ์ƒˆ๋กœ์šด ํƒ€์ด๋จธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

GetWorldTimerManager().ClearTimer(FTimerHandle& InHandle);

 

3. ํ™œ์šฉ

void AMyActor::BeginPlay()
{
    Super::BeginPlay();
    // RepeatingFunction ์„ ์ดˆ๋‹น 1 ํšŒ, ์ง€๊ธˆ๋ถ€ํ„ฐ 2 ์ดˆ๊ฐ„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
    GetWorldTimerManager().SetTimer(MemberTimerHandle, this, &AMyActor::RepeatingFunction, 1.0f, true, 2.0f);
}

void AMyActor::RepeatingFunction()
{
    // ์ด ํ•จ์ˆ˜๋ฅผ ์ถฉ๋ถ„ํžˆ ํ˜ธ์ถœํ–ˆ์œผ๋ฉด, ํƒ€์ด๋จธ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
    if (--RepeatingCallsRemaining <= 0)
    {
        GetWorldTimerManager().ClearTimer(MemberTimerHandle);
        // MemberTimerHandle ์€ ์ด์ œ ๋‹ค๋ฅธ ํƒ€์ด๋จธ์— ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    }
    // ์—ฌ๊ธฐ์„œ ์–ด๋–ค ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค...
}

 

์ฐธ๊ณ 

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Timers/

 

๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํƒ€์ด๋จธ

์„ค์ •๋œ ์ฃผ๊ธฐ๋งˆ๋‹ค ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํƒ€์ด๋จธ ๊ตฌ์กฐ์ฒด์ž…๋‹ˆ๋‹ค.

docs.unrealengine.com

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Game/โœ Unreal' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Unreal][Lyra] ๋ชจ๋“ˆํ˜• ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด, ๊ฒŒ์ž„ ํ”ผ์ฒ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ, ๊ฒฝํ—˜
  • [Unreal] ๊ฒŒ์ž„ ๋ชจ๋“œ, ๊ฒŒ์ž„ ์Šคํ…Œ์ดํŠธ
  • [Unreal] ํ”ผ์ง์Šค
  • [Unreal] ์ฝœ๋ฆฌ์ „
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[Unreal][C++] ํƒ€์ด๋จธ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”