반응형
[Unreal/C++] 하드코딩 된 REGISTER_NAME
하드코딩된 네트워킹 코드 또는 매크로를 이용하여 일관성을 유지할 수 있습니다.
UnrealNames.inl 파일에서 하드코딩된 이름들을 확인할 수 있습니다.
UnrealNames.h 파일에서는 ## 연산자를 확인할 수 있었습니다.
NAME_##name에서 ##는 문자열 결합 연산자이며, name의 값을 문자열로 변환하여 NAME_과 결합합니다. 예를 들어, name이 "DGram"이라면 NAME_DGram이라는 문자열이 됩니다.
#define REGISTER_NAME(num,name) inline constexpr EName NAME_##name = EName::name;
FName이 들어가는 곳이라면 NAME_{REGISTER_NAME}으로 사용가능합니다.
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
struct FNameEntryId;
//
// Macros.
//
// Define a message as an enumeration.
#define REGISTER_NAME(num,name) name = num,
enum class EName : uint32
{
// Include all the hard-coded names
#include "UnrealNames.inl"
// Special constant for the last hard-coded name index
MaxHardcodedNameIndex,
};
#undef REGISTER_NAME
// Define aliases for the old-style EName enum syntax
#define REGISTER_NAME(num,name) inline constexpr EName NAME_##name = EName::name;
#include "UnrealNames.inl"
#undef REGISTER_NAME
CORE_API const TCHAR* LexToString(EName Ename);
/** Index of highest hardcoded name to be replicated by index by the networking code
* @warning: changing this number or making any change to the list of hardcoded names with index
* less than this value breaks network compatibility, which by default checks for the same changelist
* @note: names with a greater value than this can still be replicated, but they are sent as
* strings instead of an efficient index
*
* @see ShouldReplicateENameAsInteger()
*/
#define MAX_NETWORKED_HARDCODED_NAME 410
UE_DEPRECATED(5.0, "This function is deprecated, please use ShouldReplicateAsInteger(EName Ename, const class FName& Name) instead.")
inline bool ShouldReplicateAsInteger(EName Ename)
{
return Ename <= EName(MAX_NETWORKED_HARDCODED_NAME);
}
CORE_API bool ShouldReplicateAsInteger(EName Ename, const class FName& Name);
반응형
'Unreal > Manual' 카테고리의 다른 글
Unreal Subsystem을 활용한 Unreal 스타일 싱글톤 패턴 (0) | 2024.03.15 |
---|---|
Unreal 수명이 관리되는 자동 인스턴싱 프로그래밍 서브시스템(Programming Subsystems) (0) | 2024.03.15 |
Unreal Steam Online Subsystem Steam 세션 생성하기 (3) | 2024.03.15 |
Unreal Steam Online Subsystem Steam 연결하기 (1) | 2024.03.14 |
Unreal Steamworks 온라인 서브시스템 Steam 가입하기 (0) | 2024.03.14 |