平面函数库

时间:2019-03-04 05:57 来源:365bet在线娱乐场 作者:admin

在开发过程中,您经常会发现有必要通过一系列功能简化项目开发。
这些功能通常没有状态,可以通过多个游戏代码重复使用。
在总结计划时通常也需要这些功能。
在上一章中,我们讨论了如何将游戏对象的功能和属性公开给平面。
但是,如果需要公开共享实用程序功能,则无需将它们分组到特定的游戏对象类型中。
在这种情况下,我们使用平面函数库。
计划库是静态函数的集合,提供未链接到特定游戏对象的有用函数。
这些库可以分组为逻辑功能集(例如AI Blue Gallery),也可以包含提供对各种功能区域(如System Blue Gallery)的访问的功能。
创建平面库非常类似于将UFUNCTION()宏用于平面公共函数。
各种平面都是从UBlueprintFunctionLibrary继承而来的。这些不是从Actor或UObject派生的。
它们应该只包含静态方法。
以下代码是Blue Analysis Gallery的一部分,并显示了如何设置库类。
UCLASS()
classUAnalyticsBlueprintLibrary:
publicUBlueprintFunctionLibrary
GENERATED_UCLASS_BODY()
/ **启动分析会话而不指定自定义属性* /
UFUNCTION(BlueprintCallable,category =“analysis”)
staticboolStartSession();
如前面的示例所示,平面库不是直接从UObject派生的,因此需要标准宏UCLASS()和GENERATED_UCLASS_BODY()。
还要将UFUNCTION()宏添加到可以从平面调用的函数中。
计划库中的函数可以设计为BlueprintCallable或BlueprintPure,具体取决于调用是否具有副作用。
完整的源代码位于/ UE4 / Engine / Plugins / Runtime / Analytics / AnalyticsBlueprintLibrary中。
这是StartSession()函数的实现。
boolUAnalyticsBlueprintLibrary:StartSession()
TSharedPtrIAnalyticsProviderProvider = FAnalytics:Get()。
GetDefaultConfiguredProvider();
是(提供者。
IsValid())
returnProvider - StartSession();
否则
UE_LOG(LogAnalyticsBPLib,警告,TEXT(“StartSession:失败,无法获得默认分析提供程序)。
请再次确认“suINI”的[Analytics]设置。
Returnfalse
注意:以前的实现与不是从UObject派生的单例对象进行交互。
此方法将第三方库的功能公开给UObject不支持的普通或C ++类。
以下代码是计划库方法的示例,该方法执行一般操作以查找托管actor的AIC控制器。
AAIController * UAIBlueprintHelperLibrary:GetAIController(AActor * ControlledActor)
APawn * AsPawn = CastAPawn(ControlledActor);
是的(?AsPawn!
= NullPtr)
returnCastAAIController(AsPawn-GetController());
returnCastAAIController(ControlledActor);
此函数在单个节点中提取多个平面节点的内容。
您还可以在平面中为其生成函数。
正如通常所说的那样,C ++版本将获得更好的性能。

回到顶部