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.
CloseUntuk 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.
Closeanimator | Contoh Animator yang memanggil metode ini. |
jobHandle | JobHandle pekerjaan yang perlu dijalankan sebelum pekerjaan aimator. |
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(); } }
.
Copyright ©2022 Unity Technologies. Tanggal Publikasi: 2022-04-04.