# CommandLineID - **功能描述:** 标记UMovieSceneCaptureProtocolBase的子类的协议类型。 - **使用位置:** UCLASS - **引擎模块:** Sequencer - **元数据类型:** string="abc" - **限制类型:** UMovieSceneCaptureProtocolBase的子类上 - **常用程度:** ★★ 标记UMovieSceneCaptureProtocolBase的子类的协议类型。 用来在Sequcencer渲染导出的时候选择到正确的处理类。一般也就引擎内部使用,除非想自己自定义渲染输出的格式协议类。 ## 测试效果: ![Untitled](Untitled.png) ## 原理: 简单来说就是通过选择的格式名字来找到相关的ProtocolType Class ```cpp void UMovieSceneCapture::Initialize(TSharedPtr InSceneViewport, int32 PIEInstance) { FString ImageProtocolOverrideString; if ( FParse::Value( FCommandLine::Get(), TEXT( "-MovieFormat=" ), ImageProtocolOverrideString ) || FParse::Value( FCommandLine::Get(), TEXT( "-ImageCaptureProtocol=" ), ImageProtocolOverrideString ) ) { static const TCHAR* const CommandLineIDString = TEXT("CommandLineID"); TArray AllProtocolTypes = FindAllCaptureProtocolClasses(); for (UClass* Class : AllProtocolTypes) { bool bMetaDataMatch = Class->GetMetaData(CommandLineIDString) == ImageProtocolOverrideString; if ( bMetaDataMatch || Class->GetName() == ImageProtocolOverrideString ) { OverrideClass = Class; } } ImageCaptureProtocolType = OverrideClass; } if (FParse::Value( FCommandLine::Get(), TEXT( "-AudioCaptureProtocol=" ), AudioProtocolOverrideString ) ) { static const TCHAR* const CommandLineIDString = TEXT("CommandLineID"); } } ```