更多说明
This commit is contained in:
@@ -188,9 +188,22 @@ XericLibrary 部分由两个dll组成,一个是 Xeric Library,另一个是 X
|
||||
#### 导航宏
|
||||
----
|
||||
|
||||
#### 安全宏
|
||||
提供寻路算法核,寻路几何体构造器(未实装)。
|
||||
|
||||
* AStart寻路算法核
|
||||
通过<code>AStart2</code>提供,算法核只包含计算过程,需要被计算的对象上实现接口<code>IAstartNavNeighborNode</code>。
|
||||
接口中需要定义当前“可寻路对象”的距离模式,相邻代价,以及所有邻居。
|
||||
如果需要定义管理器,可使用<code>AStartNode</code>进行快速封装。
|
||||
|
||||
|
||||
#### 安全宏(计划废弃)
|
||||
----
|
||||
|
||||
提供<code>ProgramFlowSecurity</code>类,以及相关的扩展和符属类型。
|
||||
安全宏用于,当一个方法中需要通过委托等方法动态调用其他一个或多个方法时,如果其中的某个方法报错,会导致后续所有方法不可用,且调用这些方法的方法也会因为错误抛出而停止,且如果运行在unity关键阶段,比如awake时,可能还会导致脚本被disable。
|
||||
|
||||
使用安全宏封装要调用的委托,并指定调用时的标识位,当产生错误时,安全宏会捕获这个错误,并转为抛出错误信息,如果选择默认解决,那么这个错误将不会影响后续运行。
|
||||
但当下次调用时,安全宏将再次抛出一个错误信息,表示已经发生错误的委托被再次调用。
|
||||
|
||||
#### 转换宏
|
||||
----
|
||||
@@ -208,17 +221,21 @@ UI界面上的Spline组件会通过RectTransform控制,有区别与三维世
|
||||
在脚本中使用<code>XericSplinePath</code>定义字段,可以让脚本在inspecter上呈现一个引用端口,引用组件以获取曲线实例。
|
||||
|
||||
曲线通常用于静态计算,在设计上并未考虑动态刷新,动态构建曲线的方法,如果希望动态地构建曲线,可以自行根据其中的结构提供点位数据。
|
||||
在<code>XericSplinePath</code>曲线上初始时使用<code>BakePoint()</code>来烘焙一次数据,这个方法会在线组件上生成BakeData,有这个数据可以获得速度正确的的曲线映射,如果担心多个烘焙进行时的性能问题,可以使用协程方法<code>BakePointCoroutine()</code>进行烘焙。
|
||||
|
||||
在<code>XericSplinePath</code>曲线上初始时使用<code>BakePoint()</code>来烘焙一次数据,这个方法会在线组件上生成BakeData,有这个数据可以获得速度正确的的曲线映射,如果担心多个烘焙进行时的性能问题,可以使用协程方法<code>BakePointCoroutine()</code>推迟烘焙到来。
|
||||
烘焙的速度与精度有关,<code>BakePoint()</code>包含一个形参用于输入烘焙精度,默认100,表示进行100次采样,理论上采样越多,精度越高,但实际上并非越高越好,采样数量保持在数倍于实际点数量即可。
|
||||
烘焙后的曲线才可以使用重映射<code>RemappingTimeValue()</code>,同时也可以使用<code>SplineLength</code>获取曲线的长度。
|
||||
|
||||
在曲线实例上可以访问<code>Evaluate...()</code>方法来计算坐标,旋转,数值,颜色过度。
|
||||
方法要求给定一个驱动值t,取值范围在0-1之间。
|
||||
默认情况下,驱动值是几乎等分地控制着每条线路的,无论两个点之间的距离长短,都近似为长度相等的多段线,这意味着无法通过这样的一个线驱动一个物体平滑地从起点运动到终点。
|
||||
默认情况下,驱动值是几乎等分地控制着每条线路的,无论两个点之间的距离长短,都近似为“时间”相等的多段线,这意味着无法通过这样的一个线驱动一个物体平滑地从起点运动到终点。
|
||||
而开头我们使用<code>BakePoint()</code>烘焙的数据就起作用了,通过调用线实例上的<code>RemappingTimeValue()</code>将时间驱动值转换为速度驱动值,这会带来非常平滑的效果。
|
||||
|
||||
2D的线路组件<code>XericRectSplinePath</code>工作在Rect上,如果屏幕的工作分辨率实际上是可变的,可能会导致线路有时会错位,这是因为线路工作的参考坐标是静态的。
|
||||
如果当前项目的窗口缩放易变,建议每帧调用<code>UpdateRectDepend()</code>(一般都很难遇到分辨率亘古不变的情况),这个方法可以刷新曲线依赖的矩形空间坐标。
|
||||
2D的线路组件<code>XericRectSplinePath</code>工作在Rect上,如果屏幕的工作分辨率实际上是可变的,可能会导致实际线路有时会错位,这是因为线路工作的参考坐标系是静态的。
|
||||
如果当前项目的窗口缩放易变,建议每帧调用<code>UpdateRectDepend()</code>(一般都很难遇到分辨率亘古不变的情况),这个方法可以刷新曲线构建所依赖的矩形空间坐标。
|
||||
|
||||
为了适配速度矫正后的线路,建议使用线路的长度作为循环的时间最大值,线路长度可以使用<code>SplineLength</code>属性获取。
|
||||
这里是一个示例:(这个示例中ui是世界空间的,并非屏幕空间,但驱动的目标对象还是世界空间的Sprite,同时较小的ui坐标便于计算尾迹的长度,避免结果速度太快)
|
||||
为了适配速度矫正后的线路,建议使用线路的长度作为循环的时间最大值,而不是强制所有线路从0-1取值,线路总长度可以使用<code>SplineLength</code>属性获取。
|
||||
这里是一个示例:(这个示例中使用的是二维曲线,但设置ui的方法是世界空间的,并非屏幕空间,这是因为我驱动的目标对象还是世界空间的Sprite,同时较小的ui坐标便于计算尾迹的长度,避免结果速度太快)
|
||||
```
|
||||
public void UpdateBySpline(XericRectSplinePath spline)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user