본문 바로가기

::protected/언리얼4&548

Game Ability System(aka.GAS) ## GAS의 특징 게임플레이 태그(GameplayTag)를 기반으로 모듈화된 클래스로 동작하며, 어빌리티의 리플리케이션을 자체적으로 지원함. 태그기반으로 동작하기 때문에 예외처리가 무척 간편하며 비교적 쉽게 리플리케이션 처리가 가능함. 또한 어빌리티가 모듈로 나뉘어져있기 때문에 캐릭터와 스킬이 다양한 게임에 적합함. - ## GAS의 요소 GameplayAbility : 게임플레이 어빌리티 ; 게임 내 어빌리티가 하는 일, (있다면) 시전하는 데 드는 비용, 언제 어떤 상황에서 사용할 수 있는지 등을 정의 GameplayEffect : 게임플레이 이펙트 ; 액션이 어떤 영향을 주는지 정의.(체력, 마나, 데미지, 버프/디버프 등) GameplayCue : 게임플레이 큐 ; GA가 발동되었을 때 어떤 효.. 2023. 10. 4.
UI Optimization(ongoing) Why is UI so expensive? 1. 불필요한 Tick(NativeTick & BlueprintTick)을 제거하자. UCLASS(Meta=(DisableNativeTick)) 항상 업데이트가 필요한 데이타 세팅이 아니면 이벤트나 딜리게이트를 사용하자. TimerEvent를 사용해 원하는 만큼만 갱신되도록 하자. 2. CreateWidget 함수는 비용이 비싸기 때문에 Pooling 해서 사용하자. ex> loading 시간에 pool을 채우고 필요할 때 가져와서 사용하자. 3. Visible 보단 HitTestInvisible(인터렉션 받지 않음-하위 불가능), SelfHitTestInvisible(자신만 인터렉션 받지 않음-하위 가능) 를 사용하자. enum class ESlateVisib.. 2023. 8. 20.
TimerManager /** * 설정된 간격으로 지정된 기본 함수를 호출하도록 타이머를 설정합니다. * 이 핸들에 타이머가 이미 설정되어 있으면 현재 타이머를 대체합니다. * * @param InOutHandle 전달된 핸들이 기존 타이머를 참조하는 경우 새 타이머를 추가하기 전에 삭제됨. 두 경우 모두 새 타이머의 새 핸들이 반환됨. * @param InObj 타이머 기능을 호출할 개체. * @param InTimerMethod 타이머가 작동할 때 호출하는 메서드. * @param InRate 설정과 실행 사이의 시간(초). 를 사용할 경우. */ template FORCEINLINE void SetTimer(FTimerHandle& InOutHandle, UserClass* InObj, .. 2023. 7. 6.
Optimization 언젠가는 도움이 되길 바라며.. [참고 영상 링크] https://www.youtube.com/watch?v=PqNm22br7y8 추후 정리해야지.. 예를 들어 오브젝트를 돌리는 함수가 있다면 모아서 실행하는게 좋음. L1캐쉬에 올려져서 다음 함수 실행 시간이 줄어듬. 2023. 7. 5.
CoreRedirects DefaultEngine.ini 파일에 구성되어 있음. [CoreRedirects] 섹션 ; 개발 도중에 클래스, 함수, 변수 이름이 변경되었을 경우, 해당 레퍼런스를 참조하지 못하는 경우에 사용해준다. // DefaultEngine.ini [CoreRedirects] // UClass +ClassRedirects=(OldName="MyOldClass",NewName="MyNewClass") +ClassRedirects=(OldName="/Script/MyProject.MyOldClass",NewName="/Script/MyProject.MyNewClass") // UEnum +EnumRedirects=(OldName="EOldNumbers",NewName="ENewNumbers") // UFunctio.. 2023. 7. 3.
Subsystem - UGameInstanceSubsystem.. 서브 시스템 클래스 Engine UEngineSubsystem Editor UEditorSubsystem GameInstance UGameInstanceSubsystem LocalPlayer ULocalPlayerSubsystem World UWorldSubsystem UGameInstanceSubsystem 사용 방법 /* * 1. UGameInstance 생성 이후, UMyGameSubsystem 이 생성됨. * 2. UGameInstance 초기화 시, 서브시스템에서 Initialize()가 호출됨. * 3. UGameInstance 종료 시, 서브시스템에서 Deinitialize()가 호출됨. * 4. 이 시점에서 서브시스템에 대한 참조가 삭제되고 더이상 참조가 없으면 가비지 컬렉션됨. */ cl.. 2023. 6. 30.