์ด๋ฒ ์ ํฌ ์์คํ ์ ์ค์ ํ๋ ์ด ๊ฐ๋ฅํ ํํ๊น์ง ๋ถ์ด๋ ๊ณผ์ ์์ ๋จ์ ๊ธฐ๋ฅ ๋ฌธ์ ๊ฐ ์๋๋ผ โ์ ์ด๋ ๊ฒ ์ ๋์ง?โ ์ถ์ ์ง์ ๋ค์ด ์ฌ๋ฌ ๊ตฐ๋ฐ์์ ๋ฐ์ํ๋ค.
| ๋ฌธ์ | ์ฒด๊ฐ๋ ์ํฉ |
|---|---|
| HPBar ๊ฐฑ์ ์๋จ | ์ ์ฒด๋ ฅ์ ์ค์ด๋๋๋ฐ HP๋ฐ๋ ๊ทธ๋๋ก |
| EnemyRef None | ์์ ฏ์์ Accessed None ๊ณ์ ๋ฐ์ |
| HP๋ฐ ์์น/ํํ ์ด์ | ๋จธ๋ฆฌ ์์ ๋ถ์ด์์ง ์๊ณ ๋ฅ๋ฅ ๋ ๋ค๋ |
| ํ์ด๋จธ UI ์ด์ | ์ ํฌ ์๊ฐ์ ํ๋ฅด๋๋ฐ UI ์ซ์๋ ๊ทธ๋๋ก |
| Chaos ํ๊ดด ๋ฏธ๋์ | ์ ์ด ์ฃฝ์ผ๋ฉด ๊ทธ๋ฅ ์ฌ๋ผ์ง๊ณ ํํธ์ด ์ ๋์ด |
์ฒ์์ ๋จ์ํ โ๋ฐ์ธ๋ฉ์ด ์ ๋๋ ๊ฑด๊ฐ?โ๋ผ๊ณ ์๊ฐํ๋๋ฐ, ์ค์ ๋ก๋ ๊ฐ ์์ฒด๋ฅผ ์๋ชป ์ฝ๊ณ ์์๋ค.
๋ฐ๋ฏธ์ง ์ ์ฉ
โ AttributeSet Health ๊ฐ์
โ UI์์๋ ๋ณํ ์์
์ด๊ฑธ ๋ก๊ทธ๋ก ์ฐ์ด๋ณด๋๊น:
CurrentHealth: 100 / MaxHealth: 100
(๊ณ์ ๋์ผ)
์ฆ, HP๋ ์ค๊ณ ์๋๋ฐ UI๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ์์๋ค.
AttributeSet ๋ฉค๋ฒ๋ฅผ ์ง์ ๋ค๊ณ ์์์ASC ๋ด๋ถ AttributeSet์ฆ ๊ตฌ์กฐ๊ฐ ์ด๋ ๊ฒ ๊ผฌ์ฌ ์์์:
ASC ๋ด๋ถ AttributeSet (์ง์ง ๊ฐ)
vs
Actor ๋ฉค๋ฒ AttributeSet (UI๊ฐ ๋ณด๊ณ ์๋ ๊ฐ)
์ด๊ฑด ๋ก๊ทธ ๋ณด๊ณ ๋ฐ๋ก ๊ฐ ์กํ๋ค.
Accessed None trying to read EnemyRef
ํ๋ฆ์ ๋ณด๋ฉด:
Widget ์์ฑ
โ Percent ๋ฐ์ธ๋ฉ ๋จผ์ ์คํ
โ EnemyRef ์์
โ ํฐ์ง
์ฆ ๋ฌธ์ ๋ ์ฐธ์กฐ ์์ฒด๊ฐ ์๋๋ผ โ์ธํ ํ์ด๋ฐโ์ด์๋ค.
Screen Space์์๋ ๊ด์ฐฎ๋ ๊ฒ
World Space๋ก ๋ฐ๊พธ๋๊น ์ด์ํด์ก๋ค.
- ์ ๋ณด์
- ๋ค์งํ
- ์์น ์ด์ํจ
์ด๊ฑด UI๊ฐ ์๋๋ผ 3D ์ค๋ธ์ ํธ์ฒ๋ผ ๋์ํ๊ธฐ ๋๋ฌธ
์ฒ์์ ์ด๋ฒคํธ๋ก๋ง ์ฒ๋ฆฌํ๋๋ฐ ์ด์ํ๋ค.
์ ํฌ ์์ โ 5์ด ํ์
5์ด ์ง๋๋ โ ๊ณ์ 5
์ฆ ์ด๋ฒคํธ๋ ์ค๋๋ฐ ์๊ฐ์ด ์ค์ด๋๋ ๊ฑด ๋ฐ์์ด ์ ๋จ
HP 0๋๋ฉด:
DestroyActor()
โ ๊ทธ๋ฅ ์ฌ๋ผ์ง
์๋ ๊ธฐ๋๋:
โ ์์ฅ์ฐฝ ๋ถ์์ง
๊ทผ๋ฐ ์ ํ ์ ์ผ์ด๋จ
ํต์ฌ์ ํ๋์๋ค.
ASC ๊ธฐ์ค์ผ๋ก ์ฝ์ด์ผ ํ๋ค
const UMyAttributeSet* Attr = AbilitySystemComponent->GetSet<UMyAttributeSet>();
๊ธฐ์กด (๋ฌธ์ )
Actor โ AttributeSet (์๋ชป๋ ๊ฐ)
์์ (์ ์)
Actor โ ASC โ AttributeSet (์ค์ ๊ฐ)
์ด๊ฑฐ ๋ฐ๊พธ๋๊น ๋ฐ๋ก HP๋ฐ ์ ์ ๋์
์ด๊ฑด ๊ตฌ์กฐ๋ณด๋ค ํ์ด๋ฐ์ด ๋ฌธ์ ์๋ค.
BeginPlay
โ Delay(0.0)
โ Get User Widget Object
โ Set EnemyRef(Self)
๋ฌธ์ ๋ ์ฐธ์กฐ๊ฐ ์๋๋ผ "์ธ์ ๋ฃ๋๋"
๊ทธ๋ฆฌ๊ณ UI์ชฝ๋ ๋ฐฉ์ด์ฝ๋ ์ถ๊ฐ
IsValid(EnemyRef)
โ false๋ฉด ๊ธฐ๋ณธ๊ฐ
์ด๊ฑฐ ๋ฃ์ผ๋๊น ์๋ฌ ์์ ํ ์ฌ๋ผ์ง
์ด๊ฑด UI๊ฐ ์๋๋ผ ์๋ ์ค๋ธ์ ํธ์ฒ๋ผ ๋ค๋ค์ผ ํ๋ค
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| Space | World |
| Pivot | (0.5, 1.0) |
| ์์น | ๋จธ๋ฆฌ ์ |
| Draw Size | ์ถฉ๋ถํ ํฌ๊ฒ |
Tick
โ ์นด๋ฉ๋ผ ๋ฐฉํฅ์ผ๋ก ํ์
Screen Space = UI
World Space = 3D ์ค๋ธ์ ํธ
์ด ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ ์ ๊ทผํด์ผ ํ๋ค.
์ด๊ฑด ๊ตฌ์กฐ๋ฅผ ๋๋ ์ผ ํด๊ฒฐ๋๋ค.
Event๋ง ์ฌ์ฉ
โ ๊ฐ ์ ์ค์ด๋ฆ
์ด๋ฒคํธ + ํ์ด๋จธ ํผํฉ
OnCombatTimerUpdated
โ ์ด๊ธฐ๊ฐ ์ธํ
SetTimer (0.1์ด)
โ GetRemainingCombatTime()
โ UI ๊ฐฑ์
์ด๋ฒคํธ = ์ํ ๋ณํ
ํ์ด๋จธ = ์๊ฐ ํ๋ฆ
์ด๊ฑด ์์ ํ ๋ค๋ฅธ ์์คํ ๋ฌธ์ ์๋ค.
StaticMesh
โ DestroyActor()
โ ๋
GeometryCollection
โ Physics
โ Fracture
HP <= 0
โ Physics ํ์ฑํ
โ Chaos Fracture ๋ฐ์
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| Threshold | ๋ฎ์ถฐ์ผ ํ๊ดด๋จ |
| DestroyActor | ๋ฐ๋ก ํ๋ฉด ์ ๋จ |
| Physics | ์ผ์ผ ์์ง์ |
| Mesh ํ์ | GeometryCollection ํ์ |
[๋ฐ๋ฏธ์ง ์ ์ฉ]
โ
[ASC Attribute ๊ฐ์]
โ
[Subsystem ์ํ ์
๋ฐ์ดํธ]
โ
[Event Broadcast]
โ
[UI ๋ฐ์]
โ
[Enemy ์ฌ๋ง]
โ
[Chaos ํ๊ดด]
| ๊ธฐ๋ฅ | ์ํ |
|---|---|
| ์ ํฌ ์ํ ๊ด๋ฆฌ | ์๋ฃ |
| ํ์ด๋จธ ๋ฆฌ์ | ์๋ฃ |
| ์๋ ์ข ๋ฃ | ์๋ฃ |
| HP๋ฐ ์ ์ ๊ฐฑ์ | ์๋ฃ |
| EnemyRef ์์ ํ | ์๋ฃ |
| World Space UI | ์๋ฃ |
| ํ์ด๋จธ UI ๊ฐฑ์ | ์๋ฃ |
| Chaos ํ๊ดด | ์๋ฃ |
| ์ ํฌ ํต๊ณ | ์๋ฃ |
์ ํฌ ์์คํ ๊ตฌํ์์ ์ค์ํ ๊ฑด ๊ธฐ๋ฅ ์์ฒด๋ณด๋ค ๋ฐ์ดํฐ ํ๋ฆ(ASC) โ ์ํ(Subsystem) โ ์ด๋ฒคํธ(UI) โ ํํ(Widget/Physics)๋ฅผ ์ ํํ ์ฐ๊ฒฐํ๋ ๊ฒ์ด์๊ณ , ๋๋ถ๋ถ ๋ฌธ์ ๋ ๋ก์ง์ด ์๋๋ผ **์ฐธ์กฐ ํ์ด๋ฐ๊ณผ ์์คํ ์ดํด ๋ถ์กฑ์์ ๋ฐ์ํ๋ค.