Interface

 


 

추상화, 가상화, Interface

 

추상화

  • C언어는 Java, C#과는 달리 추상화와 가상화가 나누어지지 않았다.
  • 가상화: virtual로 오버라이딩. 공통적으로 쓰일 부분이 있을때 자주 사용.
  • 추상화: 어떻게 쓸지몰라 특징만 명시해놓은 것. 어떻게 쓰일지 잘 모를때 자주 사용.
  • 언리얼 C: 언리얼의 Interface는 추상화(순수가상)과 가상화를 포함
    • 언리얼 Interface = 추상(순수가상) + 가상
  • 가상화를 물어보면 가상화, 추상화 모두 설명하는게 좋다.
  • 가상함수 테이블(_vtable)

 

더보기
class A
{
virtual void Test()
{
}
};
class B : public A
{
void Test() override
{
}
};

 

int main()
{
B b;
A a = b;
a.Test();
}

 class A에 있는 Test() 호출

가상테이블이 없다. 가상테이블은 동적할당(런타임 시 결정)에 이루워진다.

 

int main()
{
B* ob = new B();
A* a = ob;
a->Test();
};

 

이 경우 class B에 있는 Test() 호출.

동적할당. 가상테이블 사용.

 

 

더보기
void Test(int* c)
{
c = new int();
*c = 20;
}
int main()
{
int* a = NULL;
Test(a);
printf(a);
}

 

int*c = a

 

결과값은 NULL;

 

 

 

Interface

  • Interface의 역할: 서로 다른 애들끼리 그룹으로 묶어서 비슷한 역할을 할 수 있게 해준다. 서로 다른애들을 연결해준다. 이름이 들어간다.
  • Unreal Interface = 개념의 역할. 추상+가상 모두 포함. 

 

게임 회사
Engine 팀 Interface 생성 Client 팀
Camera ←  가져다가 사용  → Camera
Moving, Rotate, Capture 서로 간의 작업이 분리됨 Follow, Orbit, Trace
     

 

Character
Player Enemy

 

Character ICharacter Weapon
Player
Enemy
Damage() =  Sword

 

ICharacter

Damage() = 

 

 

 


Weapon

BP: Blueprint Class

BS: Blend Space

ABP: Animation Blueprint

AN: Blueprint Class AnimNotify

ANS: Blueprint Class - AnimNotifyState

E: Enum 열거형

DT: Data Table

 

UE2212_02

  Level - LEVEL
ABP_Player
BP_GameMode
 
Character Animation Common
OneHand
Unarmed
BlendSpaces BS_Sword        
BS_Unarmed
Materials

MaterialLayers
M_UE4Man_Body
M_UE4Man_ChestLogo
Mesh SK_Mannequin
SK_MAnnequin_PhysicsAsset
Skel_Mannequin

Montages
Sword Sword_Attack_1_Montage
Sword_Attack_2_Montage
Sword_Attack_3_Montage
Draw_Sword_Montage
Enemy_DeadFall_Montage
HitReaction_Montage
 
Textures UE4_LOGO_CARD
UE4_Mannequin__normals
UE4_Mannequin_MAT_MASKA
UE4Man_Logo_N
Weapons Sword
Component EStateType
MovingComponent
StateComponent
WeaponComponent
   
Environment
Materials Textures  
Meshes    
Obstacle    
Materials M_Mesh
M_White_Inst
M_Red_Inst
M_Green_Inst
M_Blue_Inst
M_UE4Man_Body_Inst
M_UE4Man_ChesLogo_Inst
   
Meshes Cone_2
Cube_2
Cylinder_2
Sphere_2
   
Notifies ANS_Equip
ANS_Combo
AN_BeginAction
AN_EndAction
   
Player BP_Player    
Weapons
Sword Combo_Sword - Blueprint Class Actor Weapon_Combo 상속
DT_Equip_Sword
DT_DoAction_Sword
 
EWeaponType
FDoActionData
FEquipData

Weapon 
- Blueprint Class Actor
Weapon_Combo - Blueprint Class Actor Weapon 상속
M_Weapon
   

 

 


 

IDamage 생성

 

Blueprint Class - Blueprint Interface - IDamage 생성

 

 


 

FHitData 생성

 

Blueprint - 구조체 - FHitData 생성

 

 


 

DT_Sword_HitData 생성

 

우클릭 - 임포트 - DT_HitData_Sword.csv 불러오기 - DT_HitData_Sword 생성

 


 

 

BP_Enemy 수정

 

 

 

Set Damage

 

 

 


 

 

Weapon 수정

 

 

 

 

 


 

 

Weapon_Combo 수정

 

On Begin Overlap

 

Event Graph

 


 

실행화면

 

'⭐ Unreal Engine > UE RPG Blueprint' 카테고리의 다른 글

[UE] 타격 구현 (Camera Shaking, Hit Stop)  (0) 2023.01.19
[UE] Effects (Particles, Sound)  (0) 2023.01.18
[UE] 무기관리 2  (0) 2023.01.12
[UE] 무기관리  (0) 2023.01.11
[UE] Enum, Statement Component  (0) 2023.01.10