AnimationClip.SetCurve
Declaration
public void SetCurve(string relativePath, Type type, string propertyName, AnimationCurve curve);Параметры
| Параметр | Описание |
|---|---|
| relativePath | Путь к игровому объекту, к которому применяется эта кривая. relativePath форматируется подобно имени пути, e.g. "root/spine/leftArm". Если relativePath пуст, то он относится к игровому объекту, к которому прикреплен клип анимации. |
| тип | Тип класса анимируемого компонента. |
| propertyName | Имя или путь к анимированному свойству. |
| кривая | Кривая анимации. |
Описание
Назначает кривую для анимации определенного свойства.
Если curve null кривая будет удалена. Если кривая уже существует для этого свойства, она будет заменена.
Примечание: SetCurve работает только во время выполнения для устаревших анимационных клипов. Для не устаревших AnimationClips это функция только редактора.
Следующий пример скрипта показывает, как GameObject позиции можно анимировать с помощью анимационного клипа. Анимированная кривая устанавливается на AnimationClip использование SetCurve(). В этом примере смещение x перемещается с 1.0 до 0.0.
SetCurve API может быть использован для анимации большого количества параметров. Некоторые типичные компоненты, такие как Transform и Material имеют легкодоступные переменные. Например, Transform имеет переменные, такие как
Transform.localPosition. Значения x, y, и z для localPosition можно анимировать с помощью AnimationClip API. Посмотреть Transform документации, чтобы увидеть переменные и как они могут быть анимированы.
Material класс связан также с переменными, которые можно анимировать. Они берутся из шейдера, используемого для отрисовки. Пункт «Edit Shader...» в выпадающем списке материала показывает все параметры, доступные для анимации. Параметры материала анимируются через ссылающийся на них класс Renderer. Имена всех анимируемых параметров материала начинаются с material префикс, за которым следует имя свойства, начинающееся с подчеркивания. Например, color (material._Color) и шкала (material._BumpScale) может быть анимирован.
Пример скрипт ниже показывает, как GameObject может быть анимирован двумя способами одновременно. В этом примере, положение GameObject анимировано, и цвет Материала также изменяется со временем.
// This script example shows how SetCurve() can be used using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { // Animate the position and color of the GameObject public void Start() { Animation anim = GetComponent<Animation>(); AnimationCurve curve;
// create a new AnimationClip AnimationClip clip = new AnimationClip(); clip.legacy = true;
// create a curve to move the GameObject and assign to the clip Keyframe[] keys; keys = new Keyframe[3]; keys[0] = new Keyframe(0.0f, 0.0f); keys[1] = new Keyframe(1.0f, 1.5f); keys[2] = new Keyframe(2.0f, 0.0f); curve = new AnimationCurve(keys); clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
// update the clip to a change the red color curve = AnimationCurve.Linear(0.0f, 1.0f, 2.0f, 0.0f); clip.SetCurve("", typeof(Renderer), "material._Color.r", curve);
// now animate the GameObject anim.AddClip(clip, clip.name); anim.Play(clip.name); } }
Имена свойств можно найти, установив в настройках Редактора режим принудительной текстовой серийизации ассетов. Использование Edit->Project Settings->Editor
Текстовые файлы, которые затем записываются редактором, будут включать имена свойств. Например, файл yaml, написанный для объекта Scene, будет включать настройки Camera. Посмотрев на этот файл yaml, вы увидите:m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: .300000012
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
Это показывает, что название для FOV Если вы хотите создать анимационный клип, чтобы анимировать поле зрения камеры, вы должны передавать "поле зрения" как параметр, а "поле зрения" как параметр. propertyName.
Еще одним примером является доступ Light настройки. scene.unity файл (предположим, что Scene называется scene) будет иметь строку для цвета света. Скрипт может получить доступ к цвету света, m_Color. Scene должен иметь свет для этого примера, чтобы работать.
Дополнительные ресурсы: ClearCurves функции, а также AnimationCurve class.