목록전체 글 (200)
초보 코린이의 성장 일지

Fist 스킬을 만들어 볼 것이다. 1. 화면에 배치하는게 아닌 기능만을 제공해주기 위해 생성해 줄 것이다. 2. 배치하는게 아니므로 Actor로 상속받는게 아닌 Object로 받아준다. 직렬화를 해줘야 하기 때문. 더보기 #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "CSubAction.generated.h" UCLASS(Abstract) // 기능이 없으므로, 할당 x class U2212_06_API UCSubAction : public UObject { GENERATED_BODY() public: UCSubAction(); public: virtual void BeginPlay(class ACha..

Fist 스킬을 만들어 볼 것이다. 1. 화면에 배치하는게 아닌 기능만을 제공해주기 위해 생성해 줄 것이다. 2. 배치하는게 아니므로 Actor로 상속받는게 아닌 Object로 받아준다. 직렬화를 해줘야 하기 때문. 더보기 #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "CSubAction.generated.h" UCLASS(Abstract) // 기능이 없으므로, 할당 x class U2212_06_API UCSubAction : public UObject { GENERATED_BODY() public: UCSubAction(); public: virtual void BeginPlay(class ACha..

모듈에 접근하여 무언가 기능을 추가하거나 할때 커플링이 일어나게 되면 치명적인 오류가 발생할 수 있다. 근본적인 문제를 해결하기위해 인터페이스나 이벤트로 중간역할을 하게 될텐데, 전혀 영향을 주지 않는 방법으로 모듈에 접근하여 기능들을 더 구현해 나가 보겠다. 더보기 #include "Weapons/CWeaponAsset.h" #include "Global.h" #include "CAttachment.h" #include "CEquipment.h" #include "CDoAction.h" #include "GameFramework/Character.h" #if WITH_EDITOR void UCWeaponAsset::PostEditChangeChainProperty(FPropertyChangedChain..

DoActionData에 배열로 정보를 보여주기 위해 작업을 시작해 보겠다. 우선 DoActionData 카테고리 안에 DoActionDatas 배열 구역을 나타내는 또 다른 Header를 만들어 줘야한다. 더보기 #pragma once #include "CoreMinimal.h" #include "IPropertyTypeCustomization.h" class WEAPON_API SWeaponDoActionData : public IPropertyTypeCustomization { public: void CustomizeHeader(TSharedRef InPropertyHandle, FDetailWidgetRow& InHeaderRow, IPropertyTypeCustomizationUtils& InC..

기본값에서 변경된 내용을 보여주게 만들어 줄 것이다. GetValue를 보면 24가지 자료형이 override가 되어있다. 사용하게 될 자료형 몇개만 추려서 선언해 놓고 시작할 것이다. 더보기 #pragma once #include "CoreMinimal.h" class WEAPON_API SWeaponCheckBoxes : public TSharedFromThis // 직접적으로 상속받으면 주소가 일치하게된다. { public: void CheckDefaultObject(int32 InIndex, UObject* InValue); // float로 cast가 될수도 있기 때문에 UObject로 객체 구분 void CheckDefaultValue(int32 InIndex, float InValue); v..

이제 체크박스를 클릭시 알맞은 데이터가 노출되고, 선택하지 않은 데이터는 안보이도록 만들어 볼 것이다. 위에 조건도 수용하면서, 새로고침이 되면 CreateCheckBoxes로 만들어진 체크박스는 사라지는게 아닌 유지가 되어야한다. 그 이유는 한번 클릭할때마다 박스가 생성이된다면 그전에 있던 박스에 정보들을 지우고 새롭게 생성하기 때문에 가지고 있는 정보를 소유하고 있어야한다. 더보기 #pragma once #include "CoreMinimal.h" #include "IDetailCustomization.h" class WEAPON_API SWeaponDetailsView : public IDetailCustomization { public: void CustomizeDetails(IDetailLayo..

체크박스를 생성하고, 체크한 목록에 관한 내용이 나오도록 만들어 나갈 것이다. 1. Grid Panel을 사용할때, 범위가 줄어들게 된다면 줄어든 범위만큼 Text가 보정처리가 안된다. 2. Uniform Grid Panel을 사용하게되면, 범위가 줄어들어도 균등하게 보정처리가 이뤄지기 때문에 이걸 사용할 것이다. 더보기 #pragma once #include "CoreMinimal.h" class WEAPON_API SWeaponCheckBoxes { public: // 하나의 프로퍼티에 대한 식별자 역할, IPropertyHandle void AddProperties(TSharedPtr InHandle); // SNew에 최상의 부모가 SWidget이 된다. 레퍼런스를 사용하기 때문에 동일하게 쓰기위..
1. 최종 https://www.youtube.com/watch?v=hH8ucYBmCTU 2. 여러 스킬들 및 버그 있나 확인용 https://www.youtube.com/watch?v=4UCHqIaE9Ic 진행 중인 작업 - 영상 편집 진행 예정 작업 -영상 편집 진행 완료 작업 - 오류, 버그 수정

왼쪽 카테고리창은 마무리가 되었으며, 오른쪽 창을 이제 커스텀 해보도록 하겠다. 1. 오른쪽 창을 커스텀하려면 Class를 하나 생성해줘야 한다. 더보기 #pragma once #include "CoreMinimal.h" #include "IDetailCustomization.h" class WEAPON_API SWeaponDetailsView : public IDetailCustomization { public: static TSharedRef MakeInstance(); void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; }; #include "SWeaponDetailsView.h" TSharedRef SWeaponDetailsV..

Weapon를 관리해주는 Plugin에 검색 기능과 검색을 할때 이름을 입력하면 알맞(연관된)은 이름만 나오도록 만들어볼 것이다. 더보기 #pragma once #include "CoreMinimal.h" #include "Widgets/SCompoundWidget.h" #include "Widgets/Views/STableRow.h" class WEAPON_API SWeaponLeftArea : public SCompoundWidget { private: void OnTextChanged(const FText& InText); // 입력한 Text void OnTextCommitted(const FText& InText, ETextCommit::Type InType); // Enter을 눌러 입력이 완..