UWA API 提供
为了给研发团队提供更为灵活的测试方式,我们提供一组UWA API,以帮助研发人员收集自定义的数据信息,并在报告中进行查看。目前,该功能只为专业会员开放。
目前,UWA API 提供以下两种功能:
自定义代码段测试
自定义变量测试
自定义代码段测试 (UWAEngine.PushSample / PopSample)
public static void PushSample(string sampleName);
public static void PopSample();
参数
sampleName 自定义的函数标签
描述
在UWAEngine中添加一个自定义的函数标签,UWAEngine会对PushSample和PopSample之间的代码段统计CPU和堆内存开销,以及其他信息,并在UWA报告中的特定模块中进行显示。
示例
UWAEngine.PushSample("MyCode");
// My Beautiful Code
UWAEngine.PopSample();
报告界面
通过 PushSample 和 PopSample API, 您可以对任意代码段的性能进行分解和测试,并在测评报告中查看其详细的性能开销。
注意: 请确保 PushSample 和 PopSample 是成对使用的。如果两者之间使用了return语句提前退出代码段(或者在协程中使用yield return提前跳出代码段),则会造成 PushSample 和 PopSample 的配对不准确,从而导致数据错误。
自定义变量测试
在性能分析过程中,我们不仅希望可以对任意的代码段进行分析,同时我们也希望对某些重要参数进行监控。因此,UWA提供了相应的API,以方便您对代码变量进行全面的监控。
UWAEngine.Register
public static void Register(object classObj, string instanceName, string fieldName, float updateInterval);
参数
classObj 类的实例 instanceName 实例的命名标签 fieldname 需要记录的非静态field的名字(field的类型只支持int,bool,float) updateInterval 更新记录的时间间隔(单位:秒)
描述
在UWAEngine中添加一个类的对象,以及一个非静态变量名,并附上自定义的变量标签,UWAEngine会按照指定的时间间隔自动更新及记录该值,并在UWA报告中的特定模块中显示对应的曲线,曲线名为:classObj(instanceName).fieldname的名字。
示例
UWAEngine.Register(this, "Single", "_positionX", 1.0f);
报告界面
通过 UWAEngine.Register API, 您可以对重要变量参数进行监控,并在测评报告中查看其具体的使用情况。
UWAEngine.LogValue
public static void Register(Type classType, string fieldName, float updateInterval);
参数
classType 类的类型 fieldname 需要记录的静态field的名字(field的类型只支持int,bool,float) updateInterval 更新记录的时间间隔
描述
在UWAEngine中添加一个类的类型,以及一个静态变量名,并附上自定义的变量标签,UWAEngine会按照指定的时间间隔自动更新及记录该值,并在UWA报告中的特定模块中显示对应的曲线,曲线名为:classType.field的名字。
示例
UWAEngine.Register(typeof(TerrainManager), "_currentTerrainIndex", 1.0f);
报告界面
通过 UWAEngine.Register API, 您可以对重要变量参数进行监控,并在测评报告中查看其具体的使用情况。
public static void LogValue(string valueName, float value);
public static void LogValue(string valueName, int value);
public static void LogValue(string valueName, bool value);
参数
valueName 自定义的变量标签 value 变量的值
描述
在UWAEngine中添加一个自定义的变量标签以及当前的数值, UWAEngine会记录下添加的时间点以及其数值,并在UWA报告中的特定模块中显示对应的曲线。
示例
UWAEngine.LogValue("A Bool", true);
UWAEngine.LogValue("A Int", Time.frameCount);
UWAEngine.LogValue("A Float", Time.deltaTime);
报告界面
通过 UWAEngine.LogValue API, 您可以特定时刻对指定变量参数进行监控,并在测评报告中查看其具体的使用情况。
注意: 对于实时变化的变量,可以在Update中调用LogValue,而对于偶尔变化的变量,可以在改变时调用LogValue。