별도로 설치된 트랙에 설정된 TimelineClip 표시 이름 변경

개시하다


독자적으로 설치된 트랙을 준비하면 아래 그림처럼 이 트랙에 편집된 디스플레이 이름을 설정할 수 있습니다. TrackClipTypeAttribute 설정된 PlayableAsset 클래스 이름을 계승할 수 있습니다.

그러나 이렇게 설정된 것은 무엇이든 기본 이름을 표시하는 상태라면 편집마다 설정된 내용에 따라 무엇을 설정했는지 모르는 상황이 발생할 수 있다
편집을 선택해서 Inspector 보기를 보면 상세한 내용을 알 수 있다면 시간을 조금 절약하고 Timeline 창만 보면 무엇을 설정했는지 알 수 있다

Inspector 보기에서 수동으로 이름을 설정할 수도 있지만, 파라미터를 설정한 다음에 편집된 디스플레이 이름을 수동으로 다시 쓰는 것은 현실적이지 않다
프로그램으로 자동으로 이름을 다시 쓰는 방법을 찾아보세요.

TimelineClip.디스플레이 설정Name


실제로 TimelineClip 클래스에서 이 편집의 디스플레이 이름을 변경하는 속성을 준비했습니다TimelineClip.displayName문자열을 설정하여 표시 이름을 임의의 문자로 변경할 수 있습니다
(왠지 이 속성이 ScriptReference에 없음
Unity2018.2부터TimelineClip 생성 시기는 상속TrackAsset된 반에서 얻을 수 있다
이번에는 그 타이밍 설정TimelineClip.displayName의 샘플 코드를 소개해 드리겠습니다.

샘플 코드


SampleTrack.cs
[TrackClipType(typeof(SamplePlayableAsset))]
public class SampleTrack : TrackAsset
{
    // ※このメソッドはUnity2018.2からoverrideできるようになったのでそれ以前のバージョンでは使えません
    protected override void OnCreateClip(TimelineClip clip)
    {
        RenameClipDisplayName(clip);
    }

    void RenameClipDisplayName(TimelineClip clip)
    {
        var asset = clip.asset as SamplePlayableAsset;
        clip.displayName = asset.Type.ToString();
    }
}
SamplePlayableAsset.cs
public enum SampleType
{
    Hoge,
    Fuga,
    Piyo,
}

public class SamplePlayableAsset : PlayableAsset
{
    [SerializeField] SampleType type;

    public SampleType Type
    {
        get { return type; }
    }
}
여기 샘플 코드처럼 설치하면 새로 생성된 편집에서 임의의 이름으로 자동으로 이름을 바꿀 수 있습니다

편집된 매개 변수를 가지고 놀고도 이름을 바꾸고 싶어요.


솔직히 상술한 견본 코드는 편집이 생성된 시기에만 이름을 바꿀 수 있고, 생성된 후에 편집을 가지고 노는 파라미터를 만족시키지 못하면 이 파라미터의 이름에 부합되는 조건으로 바꾸기를 희망한다
이 필요조건을 충족시키기 위해서는 각PlayableAsset의 매개 변수 변경을 검측해야 하지만, 이를 위해 Editor 확장제작CustomDrawer, 검측값SerialzeProperty으로 변경...이렇게 하면 커질 수 있으니 대체방안을 소개하겠습니다.
SampleTrack.cs
[TrackClipType(typeof(SamplePlayableAsset))]
public class SampleTrack : TrackAsset
{
    // TrackMixerを生成するタイミングを利用してリネームする
    public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount)
    {
        foreach (var clip in GetClips())
        {
            RenameClipDisplayName(clip);
        }

        return base.CreateTrackMixer(graph, go, inputCount);
    }

    protected override void OnCreateClip(TimelineClip clip)
    {
        RenameClipDisplayName(clip);
    }

    void RenameClipDisplayName(TimelineClip clip)
    {
        var asset = clip.asset as SamplePlayableAsset;
        clip.displayName = asset.Type.ToString();
    }
}
방금 전의 견본에 대해 새로운 처리를 진행하였다CreateTrackMixer 방법은 TimelineAsset를 생성할 때PlayableGraph 모든 궤도 실례가 한 번 호출됩니다.
이 시간은 EDITOr, 이름PlayableDirector.Play, 이름TimelineEditor.Refresh(RefreshReason.ContentsModified)을 재생할 시기입니다.
TimelineEditor.Refresh()는 유니티 2018.기능
파라미터 변경 후 얼마 지나지 않은 경우는 검출되지 않았지만, 재생의 타이밍을 확인하기 위해 파라미터를 조정해 주행하는 처리도 있어 큰 어려움은 없을 것으로 본다
이렇게 해서 Timeline의 제작을 더욱 편리하게 하세요!
색상도 클립 단위로 변경되었으면 좋겠습니다.

좋은 웹페이지 즐겨찾기