• G#

AnimatorJobExtensions.AddJobDependensi

Sarankan perubahan

Success!

Terima kasih untuk membantu kami meningkatkan kualitas Dokumentasi Unity. Meskipun kami tidak dapat menerima semua pengajuan, kami membaca setiap perubahan yang disarankan dari pengguna kami dan akan melakukan pembaruan di mana berlaku.

Close

Penjelasan gagal

Untuk beberapa alasan perubahan yang disarankan Anda tidak dapat diajukan. Silahkan <a>try lagi</a> dalam beberapa menit. Dan terima kasih untuk mengambil waktu untuk membantu kami meningkatkan kualitas Dokumentasi Unity.

Close

Cancel

Declaration

publik static void AddJobDependency( Animator animator, WordPress.org jobHandle);

Parameters

animator Contoh Animator yang memanggil metode ini.
jobHandle JobHandle pekerjaan yang perlu dijalankan sebelum pekerjaan aimator.

Description

Membuat ketergantungan antara pekerjaan aimator dan pekerjaan yang diwakili oleh pegangan pekerjaan yang disediakan. Untuk menambahkan beberapa ketergantungan pekerjaan, sebut metode ini untuk setiap pekerjaan yang perlu dijalankan sebelum pekerjaan Animator.

Setelah setiap pembaruan dependensi Animator dibilas.

using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.Playables;

using Unity.Collections; using Unity.Jobs;

public class MyMonoBehaviour : MonoBehaviour { NativeArray<int> input0; NativeArray<int> input1; NativeArray<int> output;

PlayableGraph graph; Animator animator;

public struct SumDataForJob : IJob { [ReadOnly] public NativeArray<int> input0;

[ReadOnly] public NativeArray<int> input1;

public NativeArray<int> 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<int> 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<int>(10, Allocator.Persistent); input1 = new NativeArray<int>(10, Allocator.Persistent); output = new NativeArray<int>(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(); } }