Pengontrol Animator mengontrol animasi melalui lapisan dengan mesin negara, dikendalikan oleh parameter.
using UnityEngine; using UnityEditor; using UnityEditor.Animations; using System.Collections;
// Create a menu item that causes a new controller and statemachine to be created.
public class SM : MonoBehaviour { [MenuItem("MyMenu/Create Controller")] static void CreateController() { // Creates the controller var controller = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath("Assets/Mecanim/StateMachineTransitions.controller");
// Add parameters controller.AddParameter("TransitionNow", AnimatorControllerParameterType.Trigger); controller.AddParameter("Reset", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoB1", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoC", AnimatorControllerParameterType.Trigger);
// Add StateMachines var rootStateMachine = controller.layers[0].stateMachine; var stateMachineA = rootStateMachine.AddStateMachine("smA"); var stateMachineB = rootStateMachine.AddStateMachine("smB"); var stateMachineC = stateMachineB.AddStateMachine("smC");
// Add States var stateA1 = stateMachineA.AddState("stateA1"); var stateB1 = stateMachineB.AddState("stateB1"); var stateB2 = stateMachineB.AddState("stateB2"); stateMachineC.AddState("stateC1"); var stateC2 = stateMachineC.AddState("stateC2"); // don’t add an entry transition, should entry to state by default
// Add Transitions var exitTransition = stateA1.AddExitTransition(); exitTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransition.duration = 0;
var resetTransition = rootStateMachine.AddAnyStateTransition(stateA1); resetTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "Reset"); resetTransition.duration = 0;
var transitionB1 = stateMachineB.AddEntryTransition(stateB1); transitionB1.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoB1"); stateMachineB.AddEntryTransition(stateB2); stateMachineC.defaultState = stateC2; var exitTransitionC2 = stateC2.AddExitTransition(); exitTransitionC2.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransitionC2.duration = 0;
var stateMachineTransition = rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineC); stateMachineTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoC"); rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineB); } }
layers | Lapisan dalam pengontrol. |
parameters | Parameter digunakan untuk berkomunikasi antara skrip dan pengontrol. Mereka digunakan untuk menggerakkan transisi dan campuran pohon misalnya. |
AnimatorController | Constructor. |
AddEffectiveStateMachineBehaviour | Menambahkan kelas perilaku mesin negara dari jenis tertentu ke AnimatorState untuk lapisan layerIndex. Metode ini harus digunakan ketika Anda berurusan dengan lapisan disinkronkan dan ingin menambahkan perilaku mesin negara pada lapisan disinkronkan. Perhatikan bahwa tidak ada metode Hapus yang sesuai. Untuk menghilangkan perilaku mesin negara, gunakan objek. Login |
AddLayer | Fungsi utilitas untuk menambahkan lapisan ke pengontrol. |
AddMotion | Fungsi utilitas yang menciptakan keadaan baru dengan gerakan di dalamnya. |
AddParameter | Fungsi utilitas untuk menambahkan parameter ke pengontrol. |
CreateBlendTreeInController | Membuat BlendTree dalam AnimatorState baru. |
GetBehaviours | Mengembalikan semua StateMachineBehaviour yang jenis pertandingan T atau berasal dari T. |
GetStateEffectiveBehaviours | Dapatkan daftar perilaku mesin negara yang efektif untuk AnimatorState. Perilaku disimpan di AnimatorStateMachine atau di ovverride AnimatorLayer. Gunakan fungsi ini untuk mendapatkan daftar Perilaku yang efektif digunakan. |
GetStateEffectiveMotion | Mendapat Gerak yang efektif untuk AnimatorState. Gerak disimpan di AnimatorStateMachine atau di ovverride AnimatorLayer. Gunakan fungsi ini untuk mendapatkan Gerak yang efektif digunakan. |
MakeUniqueLayerName | Buat nama unik untuk lapisan. |
MakeUniqueParameterName | Buat nama unik untuk parameter. |
RemoveLayer | Fungsi utilitas untuk menghilangkan lapisan dari pengontrol. |
RemoveParameter | Fungsi utilitas untuk menghapus parameter dari pengontrol. |
SetStateEffectiveBehaviours | Mengatur daftar Behaviour mesin negara yang efektif untuk AnimatorState. Daftar Perilaku disimpan di AnimatorStateMachine atau di ovverride AnimatorLayer. Gunakan fungsi ini untuk mengatur daftar Perilaku yang secara efektif digunakan. |
SetStateEffectiveMotion | Mengatur Gerak yang efektif untuk AnimatorState. Gerak disimpan di AnimatorStateMachine atau di ovverride AnimatorLayer. Gunakan fungsi ini untuk mengatur Gerak yang efektif digunakan. |
CreateAnimatorControllerAtPath | Membuat Animator Pengendali di jalur yang diberikan. |
CreateAnimatorControllerAtPathWithClip | Buat AnimatorController di jalur yang diberikan, dan secara otomatis membuat AnimatorLayer dengan AnimatorStateMachine yang akan menambahkan Negara dengan AnimasiClip di dalamnya. |
CreateStateMachineBehaviour | Fungsi ini akan membuat instance StateMachineBehaviour berdasarkan kelas mendefinisikan dalam script ini. |
FindStateMachineBehaviourContext | Gunakan fungsi ini untuk mengambil pemilik perilaku ini. |
Login Login | Haruskah objek tersembunyi, disimpan dengan Adegan atau dimodifikasi oleh pengguna? |
name | Nama objek. |
animationClips | Dapatkan semua Animasi Klip yang digunakan oleh pengontrol. |
GetInstanceID | Mendapatkan contoh ID objek. |
ToString | Mengembalikan nama objek. |
Destroy | Hapus GameObject, komponen atau aset. |
DestroyImmediate | Menghapus objek obj segera. Anda sangat dianjurkan untuk menggunakan Destroy bukan. |
DontDestroyOnLoad | Jangan menghancurkan target Objek saat memuat Adegan baru. |
FindObjectOfType | Mengembalikan objek aktif pertama tipe Type. |
FindObjectsOfType | Dapatkan daftar semua objek yang dimuat dari jenis tipe. |
Instantiate | Menutupi objek asli dan mengembalikan klon. |
bool | Apakah objek ada? |
operator != | Bandingkan jika dua objek mengacu pada objek yang berbeda. |
operator == | Bandingkan dua referensi objek untuk melihat apakah mereka merujuk pada objek yang sama. |