Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

AnimatorJobExtensions.AddJobDependency

Объявление

public static void AddJobDependency(Animator animator, Unity.Jobs.JobHandle jobHandle);

Параметры

animator Экземпляр Animator, вызывающий этот метод.
jobHandle JobHandle задания, которое необходимо запустить перед заданиями аниматора.

Описание

Создает зависимость между заданиями аниматора и заданием, представленным предоставленным дескриптором задания. Чтобы добавить несколько зависимостей заданий, вызовите этот метод для каждого задания, которое необходимо запустить перед заданиями аниматора.

После каждого обновления зависимости Animator сбрасываются.

using UnityEngine; using UnityEngine.Animations; using UnityEngine.Playables; using Unity.Collections; using Unity.Jobs; public class MyMonoBehaviour : MonoBehaviour { NativeArray input0; NativeArray input1; NativeArray output; PlayableGraph graph; Animator animator; public struct SumDataForJob : IJob { [ReadOnly] public NativeArray input0; [ReadOnly] public NativeArray input1; public NativeArray output; public void Execute() { for (var i = 0; i < output.Length; ++i) output[i] = input0[i] + input1[i]; } } public struct MyAnimationJob : IAnimationJob { [ReadOnly] public NativeArray input; public float sum; public void ProcessRootMotion(AnimationStream stream) { sum = 0; for (var i = 0; i < input.Length; ++i) sum += input[i]; } public void ProcessAnimation(AnimationStream stream) {} } public void Start() { input0 = new NativeArray(10, Allocator.Persistent); input1 = new NativeArray(10, Allocator.Persistent); output = new NativeArray(10, Allocator.Persistent); for (var i = 0; i < output.Length; i++) { input0[i] = i; input1[i] = 10 * i; output[i] = 0; } animator = gameObject.AddComponent<Animator>(); graph = PlayableGraph.Create(); var myAnimationJob = new MyAnimationJob(); myAnimationJob.input = output; var scriptPlayable = AnimationScriptPlayable.Create(graph, myAnimationJob); var playableOutput = AnimationPlayableOutput.Create(graph, "output", animator); playableOutput.SetSourcePlayable(scriptPlayable); graph.Play(); } public void Update() { SumDataForJob sumJob; sumJob.input0 = input0; sumJob.input1 = input1; sumJob.output = output; var jobHandle = sumJob.Schedule(); animator.AddJobDependency(jobHandle); } public void OnDestroy() { graph.Destroy(); input0.Dispose(); input1.Dispose(); output.Dispose(); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3