找回密码
 立即注册
查看: 179|回复: 0

UnrealBuildTool的引用插件描述信息类PluginReferenceDescriptor-Unreal4源码拆解-UnrealBuildTool功能流程解析

[复制链接]
发表于 2024-7-15 17:44 | 显示全部楼层 |阅读模式
Unreal4源码拆解-UnrealBuildTool功能流程解析-PluginReferenceDescriptor


  • 引擎版本4.27
  • 4.2x功能不会差太多
主要功能

概括


  • PluginReferenceDescriptor类,如其定名,引用插件的描述信息
  • 功能上大致是以JSON的方式读取和更新 .uplugin文件 的部门内容。
  • 具体设计上类内变量名JSON中项名不异。
  • 描述内容为
  1. ”Plugins”: [
  2.         {
  3.             ”Name”: ”LiveLink”,
  4.             ”Enabled”: true
  5.         }
  6.     ]
复制代码

  • PluginDescriptor的区别在于负责描述的东西分歧。 可以看个例子 Engine\Plugins\Animation\LiveLinkCurveDebugUI\ LiveLinkCurveDebugUI.uplugin
  1. {
  2.     //PluginDescriptor描述区域
  3.     ”FileVersion”: 3,
  4.     ”Version”: 1,
  5.     ”VersionName”: ”0.1”,
  6.     ”FriendlyName”: ”Live Link Curve Debug UI”,
  7.     ”Description”: ”Allows Viewing LiveLink Curve Debug Information”,
  8.     ”Category”: ”Animation”,
  9.     ”CreatedBy”: ”Epic Games, Inc.”,
  10.     ”CreatedByURL”: ”http://epicgames.com”,
  11.     ”DocsURL”: ””,
  12.     ”MarketplaceURL”: ””,
  13.     ”SupportURL”: ””,
  14.     ”EnabledByDefault”: false,
  15.     ”CanContainContent”: false,
  16.     ”IsBetaVersion”: true,
  17.     //ModuleDescriptor描述区域
  18.     ”Modules”: [
  19.         {
  20.             ”Name”: ”LiveLinkCurveDebugUI”,
  21.             ”Type”: ”Runtime”,
  22.             ”LoadingPhase”: ”PreDefault”
  23.         }
  24.     ],
  25.     //ModuleDescriptor描述区域
  26.     //PluginReferenceDescriptor描述区域
  27.     ”Plugins”: [
  28.         {
  29.             ”Name”: ”LiveLink”,
  30.             ”Enabled”: true
  31.         }
  32.     ]
  33.     //PluginReferenceDescriptor描述区域
  34.     //PluginDescriptor描述区域
  35. }
复制代码
主要函数功能

大部门相对简单,就是判断各种条件,直接放源代码了。
public void Write(JsonWriter Writer)


  • 把实例中内容写到 Json
public static void WriteArray(JsonWriter Writer, string Name, PluginReferenceDescriptor[] Plugins)


  • 输入一堆插件引用信息,从 Name 开始写到 JSON
public static PluginReferenceDescriptor FromJsonObject(JsonObject RawObject)


  • Json对象 中读取变量内容
public bool IsEnabledForPlatform(UnrealTargetPlatform Platform)


  • 判断是否在指定方针平台上启用
  1. public bool IsEnabledForPlatform(UnrealTargetPlatform Platform)
  2.         {
  3.             if (!bEnabled)
  4.             {
  5.                 return false;
  6.             }
  7.             if (WhitelistPlatforms != null && WhitelistPlatforms.Count > 0 && !WhitelistPlatforms.Contains(Platform))
  8.             {
  9.                 return false;
  10.             }
  11.             if (BlacklistPlatforms != null && BlacklistPlatforms.Contains(Platform))
  12.             {
  13.                 return false;
  14.             }
  15.             return true;
  16.         }
复制代码
public bool IsEnabledForTargetConfiguration(UnrealTargetConfiguration TargetConfiguration)


  • 判断是否在指定方针配置启用
  1. public bool IsEnabledForTargetConfiguration(UnrealTargetConfiguration TargetConfiguration)
  2.         {
  3.             if (!bEnabled)
  4.             {
  5.                 return false;
  6.             }
  7.             if (WhitelistTargetConfigurations != null && WhitelistTargetConfigurations.Length > 0 && !WhitelistTargetConfigurations.Contains(TargetConfiguration))
  8.             {
  9.                 return false;
  10.             }
  11.             if (BlacklistTargetConfigurations != null && BlacklistTargetConfigurations.Contains(TargetConfiguration))
  12.             {
  13.                 return false;
  14.             }
  15.             return true;
  16.         }
复制代码
public bool IsEnabledForTarget(TargetType Target)


  • 判断是否在指定方针类型启用
  1. public bool IsEnabledForTarget(TargetType Target)
  2.         {
  3.             if (!bEnabled)
  4.             {
  5.                 return false;
  6.             }
  7.             if (WhitelistTargets != null && WhitelistTargets.Length > 0 && !WhitelistTargets.Contains(Target))
  8.             {
  9.                 return false;
  10.             }
  11.             if (BlacklistTargets != null && BlacklistTargets.Contains(Target))
  12.             {
  13.                 return false;
  14.             }
  15.             return true;
  16.         }
复制代码
public bool IsSupportedTargetPlatform(UnrealTargetPlatform Platform)


  • 判断是否撑持方针平台
  1. public bool IsSupportedTargetPlatform(UnrealTargetPlatform Platform)
  2.         {
  3.             return SupportedTargetPlatforms == null || SupportedTargetPlatforms.Count == 0 || SupportedTargetPlatforms.Contains(Platform);
  4.         }
复制代码
成员变量内容

public string Name;


  • 主要功能:暗示插件名称
public bool bEnabled;


  • 主要功能:暗示是否启用
public bool bOptional;


  • 主要功能:暗示是否是可选的
public string Description;


  • 主要功能:暗示描述
public string MarketplaceURL;


  • 主要功能:暗示商店的URL
public List WhitelistPlatforms;


  • 主要功能:暗示白名单方针平台
public List BlacklistPlatforms;


  • 主要功能:暗示黑名单方针平台
public UnrealTargetConfiguration[] WhitelistTargetConfigurations;
  1. public enum UnrealTargetConfiguration
  2.     {
  3.         /// Unknown
  4.         Unknown,
  5.         /// Debug configuration
  6.         Debug,
  7.         /// DebugGame configuration; equivalent to development, but with optimization disabled for game modules
  8.         DebugGame,
  9.         /// Development configuration
  10.         Development,
  11.         /// Shipping configuration
  12.         Shipping,
  13.         /// Test configuration
  14.         Test,
  15.     }
复制代码

  • 主要功能:暗示白名单方针配置
public UnrealTargetConfiguration[] BlacklistTargetConfigurations;


  • 主要功能:暗示黑名单方针配置
  1. public enum TargetType
  2.     {
  3.         /// Cooked monolithic game executable (GameName.exe).  Also used for a game-agnostic engine executable (UE4Game.exe or RocketGame.exe)
  4.         Game,
  5.         /// Uncooked modular editor executable and DLLs (UE4Editor.exe, UE4Editor*.dll, GameName*.dll)
  6.         Editor,
  7.         /// Cooked monolithic game client executable (GameNameClient.exe, but no server code)
  8.         Client,
  9.         /// Cooked monolithic game server executable (GameNameServer.exe, but no client code)
  10.         Server,
  11.         /// Program (standalone program, e.g. ShaderCompileWorker.exe, can be modular or monolithic depending on the program)
  12.         Program,
  13.     }
复制代码
public TargetType[] WhitelistTargets;


  • 主要功能:暗示白名单方针类型
public TargetType[] BlacklistTargets;


  • 主要功能:暗示黑名单方针类型
public List SupportedTargetPlatforms;


  • 主要功能:暗示撑持的方针平台
枚举介绍
  1. public enum PluginDescriptorVersion
  2.     {
  3.         /// <summary>
  4.         /// Invalid
  5.         /// </summary>
  6.         Invalid = 0,
  7.         /// <summary>
  8.         /// Initial version
  9.         /// </summary>
  10.         Initial = 1,
  11.         /// <summary>
  12.         /// Adding SampleNameHash
  13.         /// </summary>
  14.         NameHash = 2,
  15.         /// <summary>
  16.         /// Unifying plugin/project files (since abandoned, but backwards compatibility maintained)
  17.         /// </summary>
  18.         ProjectPluginUnification = 3,
  19.         /// <summary>
  20.         /// This needs to be the last line, so we can calculate the value of Latest below
  21.         /// </summary>
  22.         LatestPlusOne,
  23.         /// <summary>
  24.         /// The latest plugin descriptor version
  25.         /// </summary>
  26.         Latest = LatestPlusOne - 1
  27.     }
复制代码
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-22 09:41 , Processed in 0.102913 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表