【Unity】Timeline学习笔记(七):自定义片段(Clip)

一// 继承PlayableAsset类,实现ITimelineClipAsset接口

正如自定义轨道(Track)需要继承TrackAsset类那样,自定义片段(Clip)也要遵守一定的模板:继承PlayableAsset类,以及实现ITimelineClipAsset接口。

using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

public class LearnClip : PlayableAsset, ITimelineClipAsset
{

}

在写好类的头部后,会出现红色波纹线提示我们出错。

快捷键 Alt + Enter 修补错误后,代码中会多出一个属性(Property)和方法(Function)。

using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

public class LearnClip : PlayableAsset, ITimelineClipAsset
{
    public ClipCaps clipCaps
    {// ITimelineClipAsset接口的实现需求
        get
        {
            throw new System.NotImplementedException();
        }
    }

    public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
    {// PlayableAsset类的继承需求
        throw new System.NotImplementedException();
    }
}

二// ClipsCaps属性

遇到陌生的名称不用慌,先查看ClipCaps的文档。

【Unity】Timeline学习笔记(七):自定义片段(Clip)_第1张图片

可以看到,ClipCaps中的内容都是与Clip相关的操作,印象不深的朋友可以看这篇。

当我们写    时,

片段在检视窗的内容是这样——

【Unity】Timeline学习笔记(七):自定义片段(Clip)_第2张图片

【补充很重要的一点,因为这些参数都需要在检视窗可以调节,所以应该给这个类添加Serializable属性

而当我们写      时,

检视窗的内容就少很多了——

【Unity】Timeline学习笔记(七):自定义片段(Clip)_第3张图片

所以 ClipCaps 的意义就是:被允许的功能将可以在Inspector被编辑,这些功能都是与Clip相关的操作。


三// CreatPlayable方法

【Unity】Timeline学习笔记(七):自定义片段(Clip)_第4张图片\

CreatePlayable 方法不能单独地看,但它的总体意思就是创建一个Playable,然后插入到PlayableGraph

它有两个参数:graph指示要插入的Graph;owner则是被创建的Playable的来源

四// PlayableBehaviourScriptPlayable

用户自定义的所有Playable都必须继承自PlayableBehaviour类,在自定义片段的脚本中,它需要搭配ScriptPlayable使用。

所以一个自定义Clip脚本的框架基本如下面的代码:

using System;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

[Serializable]    // 序列化
public class DialogueClip : PlayableAsset, ITimelineClipAsset
{
    public DialogueBehaviour template = new DialogueBehaviour ();    // 一般都将变量命名为template

    public ClipCaps clipCaps
    {// 检视窗可调节的功能
        get { return ClipCaps.None; }
    }

    public override Playable CreatePlayable (PlayableGraph graph, GameObject owner)
    {// 创建Playable
        var playable = ScriptPlayable.Create (graph, template);    // 真正用来创建Playable的语句
        
        //...这里还可以有一些赋值操作...//
        
        return playable;    // 返回创建的Playable,Clip脚本任务完成
    }
}

 

你可能感兴趣的:(Unity,Unity,Timeline,Clip,脚本)