F3.WITH_EDITOR
大约 4 分钟
导读
| 特征 | 描述 |
|---|---|
WITH_EDITORONLY_DATA | 用于标记在头文件中的成员变量,仅在编辑器中可见,游戏运行时被忽略。 |
WITH_EDITOR | 用于标记在 CPP 文件中的代码块,该代码块在构建编辑器时应被编译。 |
GIsEditor | 全局布尔变量,用于判断当前是否在虚幻编辑器中运行。 |
WITH_EDITOR 和 GIsEditor 的区别
WITH_EDITOR
WITH_EDITOR 是一个宏,用于在代码中标记在构建编辑器时应该被编译的部分。以下是示例代码:
#if WITH_EDITOR
// 仅在构建编辑器时编译的代码
#endif
GIsEditor
GIsEditor 是一个全局的布尔变量,用于判断当前是否在虚幻编辑器中运行。以下是示例代码:
if (GIsEditor)
{
// 仅在编辑器中运行时执行的代码
}
区别和示例
WITH_EDITOR是一个宏,而GIsEditor是一个全局的布尔变量。- 使用
WITH_EDITOR的代码在构建编辑器时会被编译,而GIsEditor是在运行时判断是否在编辑器中运行。
#if WITH_EDITOR
int32 TestInt = 0;
if(GIsEditor)
{
TestInt = 1;
}
else
{
TestInt = 2;
}
#endif
在这个示例中,如果在编辑器中运行,则
TestVar被设置为1;否则,它被设置为2。这种区别允许开发者根据构建环境和运行时上下文来控制代码的行为。
| 特征 | WITH_EDITOR | GIsEditor |
|---|---|---|
| 类型 | 宏 | 全局布尔变量 |
| 用途 | 标记仅在构建编辑器时编译的代码 | 判断是否在虚幻编辑器中运行 |
| 作用范围 | 代码中,通常在头文件或CPP文件中使用 | 通常在代码中使用,用于运行时判断编辑器运行状态 |
WITH_EDITORONLY_DATA 和 WITH_EDITOR 的区别
WITH_EDITORONLY_DATA
示例代码:
class MyClass
{
public:
UPROPERTY(EditAnywhere, Category = "MyCategory")
int32 EditableVariable;
#if WITH_EDITORONLY_DATA
UPROPERTY(EditAnywhere, Category = "MyCategory")
float EditorOnlyVariable;
#endif
};
在这个示例中,
EditorOnlyVariable只会在编辑器中显示,并且在游戏运行时将被忽略。
WITH_EDITOR
示例代码:
#if WITH_EDITOR
void MyClass::EditorOnlyFunction()
{
// 编辑器中调用的函数
}
#endif
在这个示例中,
EditorOnlyFunction只会在构建编辑器时被编译,而在独立构建时会被移除。
区别和示例
- 使用
WITH_EDITORONLY_DATA的成员变量将仅在编辑器中可见,而在游戏运行时将被忽略。 WITH_EDITOR通常用于包含编辑器特定的功能或逻辑的 CPP 代码块。
class MyClass
{
public:
UPROPERTY(EditAnywhere, Category = "MyCategory")
int32 EditableVariable;
#if WITH_EDITORONLY_DATA
UPROPERTY(EditAnywhere, Category = "MyCategory")
float EditorOnlyVariable;
#endif
#if WITH_EDITOR
void EditorOnlyFunction();
#endif
};
在这个示例中,
EditorOnlyVariable在编辑器中可见,而EditorOnlyFunction仅在编辑器构建时可用。这样可以更精确地控制编辑器和游戏运行时的代码行为。
| 特征 | WITH_EDITORONLY_DATA | WITH_EDITOR |
|---|---|---|
| 类型 | 宏 | 宏 |
| 用途 | 标记仅在编辑器中可见的成员变量 | 标记在构建编辑器时应该被编译的代码块 |
| 作用范围 | 通常在头文件中使用,标记成员变量 | 通常在 CPP 文件中使用,标记编辑器特定的功能或逻辑 |
.png)
.png)


.png)
