Unity 6.3
0 онлайн 44 гостей 3 в системе
Вход

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.