⭐ Unreal Engine/UE RPG Blueprint

[UE] Unreal Interface, Weapon

Designerd 2023. 1. 13. 09:05

 

목차

     

     


     

    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

     


     

    실행화면