5.在权衡到使用的便利性时,大部分Actor都是有变换数据的,我们会经常获取设置它的坐标,如果总是得先获取作为根组件的SceneComponent组件,然后再调用相应接口获取数据则过于繁琐。所以UE也为了我们直接提供了一些便利性的Actor方法,如(Get/Set)ActorLocation等,其实内部都是转发到RootComponent。如下代码: /*~ * Returns...
说完动画的优化,接下来游戏线程还有大量的Scene Component,Scene Component是指世界中有坐标位置的对象,它的Transform更新都是在游戏线程中计算。当你大地图、大场景动态更新对象非常多,同时每个对象身上会挂很多Scene Component的时候,计算量是非常大的。尽管我们会把Scene Component的计算踢到异步线程,但是计算量依然很大。
SceneComponent 具有好几种作用: 用来标定位置 用来装载其他组件 实现比较多的组合功能 我们创建一个SceneComponent用来生成Actor: 添加代码: 编译之后打开编辑器,将组件添加进Actor ,并且设置生成目标类: 使用蓝图调用方法: 运行之后可见: 一个之前创建过的NewCreateActor生成了出来。
说完动画的优化,接下来游戏线程还有大量的Scene Component,Scene Component是指世界中有坐标位置的对象,它的Transform更新都是在游戏线程中计算。当你大地图、大场景动态更新对象非常多,同时每个对象身上会挂很多Scene Component的时候,计算量是非常大的。尽管我们会把Scene Component的计算踢到异步线程,但是计算量依然很大。
AActor::CreateComponentFromTemplate(UActorComponent * Template,constFName InName)11MyGame.exe!USCS_Node::ExecuteNodeOnActor(AActor * Actor, USceneComponent * ParentComponent,constFTransform * RootTransform,constFRotationConversionCache * RootRelativeRotationCache,boolbIsDefaultTransform)12MyGame.exe!U...
VS会自动补全类关系在上面 Paste_Image.png 其实对应的类关系很简单,如下.(PS 这个图很有用 帮助理解代码架构) 万恶之源Class UObject 一级派生Class UActorComponent 角色组件 1.Class UInputComponent 输入组件 2.Class UMovementComponent 移动组件 二级派生Class USceneComponent 场景可见 包含Transform ...
在分离变换引脚时复制 "Add Scene Component"节点将不会再使得该变换引脚在复制的节点上可见。 编辑在隐藏的子关卡中实例化的蓝图将不会再重置隐藏的实例上的变换。 确保在序列化基于Actor的蓝图类资源后不会设置'bExchangedRoles' 。 检查枚举数组引脚的值将会显示枚举值的显示名称。 修复了当构建蓝图类实例时组件...
当Scene Component发生位置变化的时候会触发Overlap的检查,每一帧有大量运动对象时会产生大量Overlap事件,耗费比较大的开销。优化的原则是尽可能把不需要产生Overlap的事件关掉,注意引擎默认是打开的。我们对层级结构比较复杂的做了子Component是否打开overlap事件的引用计数,会看自己是不是打开了Overlap事件,以及自己的子对象...
if (USceneComponent* SceneComponent = Cast<USceneComponent>(Component)) { FComponentEditorUtils::BindComponentSelectionOverride(SceneComponent, false); } } } GEditor->GetSelectedComponents()->EndBatchSelectOperation(false); } } SetActorSelectionFlags(Actor); ...
当Scene Component发生位置变化的时候会触发Overlap的检查,每一帧有大量运动对象时会产生大量Overlap事件,耗费比较大的开销。优化的原则是尽可能把不需要产生Overlap的事件关掉,注意引擎默认是打开的。我们对层级结构比较复杂的做了子Component是否打开overlap事件的引用计数,会看自己是不是打开了Overlap事件,以及自己的子对象...