Как я могу получить свойства дорожки анимации Cinemachine Timeline и изменить значения свойств? - PullRequest
0 голосов
/ 11 декабря 2018
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

public class MyTimeline : MonoBehaviour
{
    [TrackColor(0.4f, 0.7f, 0.6f)]
    [TrackBindingType(typeof(ParticleSystem))]
    public class ParticleSystemControlTrack : TrackAsset
    {
        public override void GatherProperties(PlayableDirector director, IPropertyCollector driver)
        {
            //
            // In this track, the following properties will be modified.
            //
            // - transform.position
            // - transform.rotation
            // - particleSystem.useAutoRandomSeed
            // - particleSystem.main.duration
            // - particleSystem.emission.rateOverTimeMultiplier
            // - particleSystem.emission.rateOverDistanceMultiplier
            //
            // Note that the serialized property names are a bit defferent from
            // their property name.
            //

            var ps = director.GetGenericBinding(this) as ParticleSystem;
            if (ps == null) return;

            var go = ps.gameObject;

            driver.AddFromName<Transform>(go, "m_LocalPosition");
            driver.AddFromName<Transform>(go, "m_LocalRotation");

            driver.AddFromName<ParticleSystem>(go, "lengthInSec");
            driver.AddFromName<ParticleSystem>(go, "autoRandomSeed");
            driver.AddFromName<ParticleSystem>(go, "randomSeed");

            driver.AddFromName<ParticleSystem>(go, "EmissionModule.rateOverTime.scalar");
            driver.AddFromName<ParticleSystem>(go, "EmissionModule.rateOverDistance.scalar");
        }
    }
}

Это во время выполнения.Но я не уверен, как использовать метод GatherProperties (PlayableDirector? Что следует указывать как для драйвера? Что такое IPropertyCollector?

Но моя главная цель - как-то добраться до свойств анимационной дорожки в редакторе, возможно,использование отражения?

Timeline

На скриншоте в инспекторе справа есть некоторые свойства, например, положение. Я хочу сделать это, когда перетаскиваю или добавляюАниматор на анимационной дорожке автоматически определяет положение объекта и устанавливает его в положение в инспекторе. Возможно ли это? Это должно быть в редакторе, а не во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...