0
点赞
收藏
分享

微信扫一扫

UE5 C++ UGameInstance 功能、作用及应用

心如止水_c736 2023-09-02 阅读 32
ue5

说明以该命令行模式启动游戏的前提下的两个问题:

1.WITH_EDITOR中的代码会被编译

2.由于没有在编辑器中(即没有打开虚幻编辑器),所以GIsEditor为false

WITH_EDITOR和WITH_EDITORONLY_DATA的区别

在论坛中找到的答案:

WITH_EDITORONLY_DATA in headers for wrapping reflected members.
WITH_EDITOR in CPP files for code.. Has nothing to do with reflection.

意思就是:

头文件中使用WITH_EDITORONLY_DATA包装反射的成员。

在CPP文件的代码中使用WITH_EDITOR,与反射无关。

callineditor

	
.h
UFUNCTION(CallInEditor, Category = "Sky Creator|General")
void SetEditorTimeOfDay(float NewValue)
;
UFUNCTION(CallInEditor, Category = "Sky Creator|General")
void SetEditorWeatherPreset(USkyCreatorWeatherPreset* NewValue);
UFUNCTION(CallInEditor, Category = "Sky Creator|General")
void SetEditorWeatherSettings(FSkyCreatorWeatherSettings NewValue);

.cpp


#define SKYCREATOR_DECLARE_SEQUENCER_SETFUNCTION_ANDUPDATE(MemberType, MemberName) void ASkyCreator::Set##MemberName(MemberType NewValue)\
{\
if (MemberName != NewValue)\
{\
MemberName = NewValue;\
UpdateSettings();\
}\
}\

SKYCREATOR_DECLARE_SEQUENCER_SETFUNCTION(float, EditorTimeOfDay);
SKYCREATOR_DECLARE_SEQUENCER_SETFUNCTION_ANDUPDATE(USkyCreatorWeatherPreset*, EditorWeatherPreset);

SKYCREATOR_DECLARE_SEQUENCER_SETFUNCTION(float, SunriseTime);
SKYCREATOR_DECLARE_SEQUENCER_SETFUNCTION(float, SunsetTime);
SKYCREATOR_DECLARE_SEQUENCER_SETFUNCTION(float, SunDawnOffsetTim

//ue 5.2
namespace EWorldType
{
enum Type
{
/** An untyped world, in most cases this will be the vestigial worlds of streamed in sub-levels */
None,

/** The game world */
Game,

/** A world being edited in the editor */
Editor,

/** A Play In Editor world */
PIE,

/** A preview world for an editor tool */
EditorPreview,

/** A preview world for a game */
GamePreview,

/** A minimal RPC world for a game */
GameRPC,

/** An editor world that was loaded but not currently being edited in the level editor */
Inactive
};
}
举报

相关推荐

0 条评论