Unity Timeline扩展研究之进阶篇(二)
一、前言基础篇(一)中介绍了对timeline大体的扩展,本文将会着重优化timeline相关的一些细节,让timeline不仅好用且更美观。走起!
二、具体扩展
这部分内容挺简单的,都是些小细节,就不多说废话了,直接上干货!介绍前先知会下大家,笔者的timeline版本为1.4.8,不同版本略有不同,大家用时注意一下!
2.1上下文菜单优化
关于此部分,主要的优化是自定义菜单的内容。效果如图1,图2,所示。想要做到这个效果很简单,只需要在track子类或者signalEmitter子类上加上特性即可。但光这样是无法实现图1中的分级菜单效果的,如果想加分级菜单还需要在类前加上特性,而MenuCategoryAttribute为内部类,所以大家需要先把它改为public才可以使用,图1中效果举例的代码见图3。
图1 轨道上下文菜单
图2 clip上下文菜单
图3上下文菜单扩展代码
2.2 Track轨道图标优化
效果如图4,给自定义的轨道加一个图标,增加辨识度。方法很简单,只需要在Assets/Gizmos下,放一个png图片,名称为Track类的类型就可以了。举个例子,笔者自定义的UiDynamicEffectTrack类的设置如图5。
图4 轨道图标
图5 gizmoz文件夹展示
2.3关于Clip部分效果的扩展
需要继承ClipEditor,并加上CustomTimelineEditor,经常扩展编辑器的同学应该很容易看懂,以下代码块1为位更改clip名字的案例,效果如图6,可以参考下代码。平常大家可以看看基类可以重载的方法,从而实现更多的效果。
同理也可以扩展Track,如代码段2,只不过基类是TrackEditor。
扩展Signal,如代码段3,只不过基类是MarkerEditor。
代码块1:
class ChangeAlphaAssetEditor : ClipEditor
{
public override void OnClipChanged(TimelineClip clip)
{
if(clip.asset is IDynamicChangeName changeNameClass)
{
clip.displayName = changeNameClass.GetChangedName();
}
}
}
代码块2:
public class NarratageTrackEditor: TrackEditor
{
}
代码块3:
class EventSignalEmitterTimelineEditor : MarkerEditor
{
public override MarkerDrawOptions GetMarkerOptions(IMarker marker)
{
var options = base.GetMarkerOptions(marker);
EventSignalEmitter emitter = (EventSignalEmitter)marker;
options.tooltip = emitter.eventType.ToString();
return options;
}
}
图6 clip改变名称效果
2.4关于检视版部分的扩展
这部分和平常扩展monobehaviour脚本的检视版一样,可以参考下timeline package源码中AnimationTrackInspector等,就不多说了,都是大家扩展编辑器过程中的常规操作。
三、结语
对于经常扩展编辑器的同学来说,本文可能太简单了,对此只能抱歉的说声,打扰了!目前笔者还没有其他好的用于扩展timeline的灵感,本题材先就此打住吧,将来如果有了好的灵感,或者比较骚的玩法在更新(三)!
页:
[1]