Help us understand the problem. What is going on with this article?

Unity2017.1b4のタイムラインでScriptを動かす

More than 3 years have passed since last update.

雑メモです。

噂のTimelineをUnity2017.1のベータ4で触ってみたんですが、なんかどんどん仕様が変わってるようで、ダウンロードしたサンプルコードが動かなかったり、ネット上に正しい情報も見つからないので、雑な作業メモを残しておきます。(が、もう2017.1b5が出ていたので、すでに仕様が変わっているかもしれない。)

以下、色々やってみて動いたタイムライン上からscriptを動かすやり方。

1) TimeLineアセットを作成。
2) PlayableDirectorコンポーネントを、適当なゲームオブジェクトに適用。TimeLineアセットを紐づける。
3) PlayableBehaviourを継承したHogePlayableBehaviourを作ってタイムラインからのイベントを処理するコードを書く。
4) PlayableAssetを継承したHogePlayableAssetを作る。インスペクタで設定したいパラメータがあればExposedReferenceで宣言する。HogePlayableBehaviourをインスタンス化する。パラメータを受けわたすコードを書く。ScriptPlayableを作成して返す。
5) TimeLineにPlayableTrackを追加。
6) PlayableTrackにHogePlayableBehaviourを配置する。HogePlayableBehaviourのインスペクタでのパラメータがあれば設定する。

HogePlayableAsset.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;

[System.Serializable]
public class HogePlayableAsset : PlayableAsset
{
    public ExposedReference<UnityEngine.UI.Text> textField; // テキストフィールドを受け渡してみる
    public override Playable CreatePlayable(PlayableGraph graph, GameObject go)
    {
        var b = new HogePlayableBehaviour();
        b.textField = textField.Resolve(graph.GetResolver());
        return ScriptPlayable<HogePlayableBehaviour>.Create(graph, b);
    }
}
HogePlayableBehaviour.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;

public class HogePlayableBehaviour : PlayableBehaviour
{
    public UnityEngine.UI.Text textField;

    public HogePlayableBehaviour()
    {
    }

    public override void OnGraphStart(Playable playable) {
    }

    public override void OnGraphStop(Playable playable) {
    }

    public override void OnBehaviourPlay(Playable playable, FrameData info) {
    }

    public override void OnBehaviourPause(Playable playable, FrameData info) {
    }

    public override void PrepareFrame(Playable playable, FrameData info) {
        if(textField) textField.text = "deltaTime : " + info.deltaTime;
    }
}

タイムライン自体は良い感じのですが、どうも使うまでの手順が面倒ですねえ。元Flasherからすると、シーンに置いたオブジェクトが自動でタイムラインに乗っちゃう勢いでも構わないんですが。(そう言うエディタ拡張を作れと言う話?)

harayoki
職業エンジニアです。エンジニアとしてそこそこ良い働きをしますが、趣味興味はデザインやアナログ方面にある変わった人です。かつ、アウトドア派なので休日にコンピュータはほとんどいじりませぬ。最近はてぃーえーとか名乗るようにもなりました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした