参考组件
UCFBreakableUnitsComponent
一组可破坏单元的复制核心,每个单元依次经历从 0(完好)到 MaxLevel(彻底破坏)的各个等级。拥有者布置单元,并在每一端上以完全相同的数据调用 InitUnits;单元的索引即其身份,在所有端上一致。权威端确认等级(RaiseUnitLevelOnAuthority),并通过最近事件的环形缓冲区进行复制;客户端会预测领先于权威端的等级(PredictUnitLevel),而追踪器记录每一端所显示的内容。子类负责定义单元的外观以及它所处的位置;它从不直接触碰复制状态本身。
函数
Primitive 所属单元的单元组件,以及该单元的索引:先通过基元上的 ICFBreakableUnitPart 查找,否则取第一个认识该基元的附着父级。若都找不到,则返回 nullptr。
- 分类
- Crushform|Breakable
权威端:将作用于某基元的外部命中应用到其所属的单元。撞击点为命中位置,方向取射线的方向(对于零长度射线,取表面法线的反方向)。
- 分类
- Crushform|Breakable
任一端:ApplyHitResultOnAuthority 的预测对应函数。
- 分类
- Crushform|Breakable
权威端:将单元提升到其定义为此次命中给出的等级(HitResponses),复制该结果并播放。若无任何变化,则返回 false。为虚函数:需要自行判定命中的子类(例如玻璃板的裂纹)应重写此函数。
- 分类
- Crushform|Breakable
任一端:立即显示此次命中的等级,并等待权威端确认;在 PredictionConfirmTimeoutSeconds 之后撤销。调用方需自行提供通往服务器的途径。
- 分类
- Crushform|Breakable
拥有者布置的单元数量。
- 分类
- Crushform|Breakable
单元可达到的最高等级,即传给 InitUnits 的值;单元在等级 0 时完好。
- 分类
- Crushform|Breakable
本端显示的等级:权威端的等级,或领先于权威端的预测等级。
- 分类
- Crushform|Breakable
权威端在当前世代中确认的等级。
- 分类
- Crushform|Breakable
对于有效索引且显示等级为 0 的情况返回 true;对于无效索引返回 false。
- 分类
- Crushform|Breakable
立即显示 StoredImpact 的等级(领先于权威端),同时显示 GatherUnitsRaisedWith 添加的单元。索引或等级无效,或单元已显示该等级或更高等级时,返回 false。
权威端:为该单元及 GatherUnitsRaisedWith 添加的单元确认 Level,复制该结果,在此端播放,并通知 OnUnitsRaisedOnAuthority。非权威端、索引或等级无效,或单元已处于该等级或更高等级时,返回 false。
将单元的预测回滚到已确认的等级,同时回滚 GatherUnitsRaisedWith 添加的单元的预测。索引无效或单元没有预测时,返回 false。
任一端:本组件学到的第一个世代(无论来自本端还是复制的等级)都会被接受,无论其值为何;此后,更新的世代会立即将本端所有单元恢复为完好状态,相同或更旧的世代则被忽略。权威端还会清空复制的等级和事件环。
基元(及其实例,即 ItemIndex)所代表的单元;若无则为 INDEX_NONE。对挂载在本组件之下的基元调用。
事件
每当单元的显示等级发生变化时,两者都会在每一端触发。中途加入的玩家进行追赶时(先以 0 初始化,再应用复制的等级),会为所有已提升的单元触发它们,因此不应在此处放置一次性特效。处理函数可以提升、预测或取消其他单元,并应用某个世代。
- 分类
- Crushform|Breakable