Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

AnimationClip.SetCurve

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public function SetCurve(relativePath: string, type: Type, propertyName: string, curve: AnimationCurve): void;
public void SetCurve(string relativePath, Type type, string propertyName, AnimationCurve curve);

Параметры

relativePath @param relativePath Путь к игровому объекту, к которому относится эта кривая. relativePath отформатирован подобно файловому пути, например "rootrelativePathleftArm". Если relativePath пуст, то он ссылается на игровой объект, к которому привязан анимационный клип.
type @param type Тип класса компонента, который анимируется.
propertyName @param propertyName Имя или путь к анимируемому свойству.
curve @param curve Анимационная кривая.

Описание

Назначает кривую для анимации конкретного свойства.

Если кривая null, кривая будет удалена. Если кривая уже существует для этого свойства, она будет заменена.

**Note:** SetCurve will only work at runtime for Legacy AnimationClips. For Non-Legacy AnimationClips it is an editor-only function.

Общие имена: "localPosition.x", "localPosition.y", "localPosition.z", Общие имена: "localPosition.x", "localPosition.y", "localPosition.z", "localScale.x", "localScale.y", "localScale.z".

var anim: Animation;

function Start() { anim = GetComponent.<Animation>();

// Animates the x coordinate of a transform position. // Create the curve. var curve : AnimationCurve = AnimationCurve.Linear(0, 1, 2, 3);

// Create the clip with the curve. var clip : AnimationClip = new AnimationClip(); clip.legacy = true; clip.SetCurve("", Transform, "localPosition.x", curve); // Add and play the clip anim.AddClip(clip, "test"); anim.Play("test"); } @script RequireComponent(Animation)
using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animation))] public class ExampleClass : MonoBehaviour { public Animation anim; void Start() { anim = GetComponent<Animation>(); AnimationCurve curve = AnimationCurve.Linear(0, 1, 2, 3); AnimationClip clip = new AnimationClip(); clip.legacy = true; clip.SetCurve("", typeof(Transform), "localPosition.x", curve); anim.AddClip(clip, "test"); anim.Play("test"); } }

Свойства Material могут быть анимированы с использованием имени свойства экспортированного в шейдере. Общие имена свойств: "_MainTex", "_BumpMap", "_Color", "_SpecColor", "_Emission". Как анимировать различные типы свойств материала:

Свойства Float: "PropertyName"

__Свойства Vector4:__ "PropertyName.x", "PropertyName.y", "PropertyName.z", "PropertyName.w"

__Свойства Color:__ "PropertyName.r", "PropertyName.g", "PropertyName.b", "PropertyName.a"

Свойства вращения UV: "PropertyName.rotation"

UV смещение и масштаб: "PropertyName.offset.x", "PropertyName.offset.y", "PropertyName.scale.x", "PropertyName.scale.y"

To index into multiple materials on the same renderer you can prefix the attribute like this: "[1]._MainTex.offset.y"

See Also: Функция ClearCurves, класс AnimationCurve.

var anim: Animation;

function Start() { anim = GetComponent.<Animation>();

// Animate color's alpha and main texture's horizontal offset. var clip = new AnimationClip (); clip.legacy = true; clip.SetCurve ("", Material, "_Color.a", AnimationCurve (Keyframe(0, 0, 0, 0), Keyframe(1, 1, 0, 0))); clip.SetCurve ("", Material, "_MainTex.offset.x", AnimationCurve.Linear(0, 1, 2, 3)); anim.AddClip (clip, clip.name); anim.Play(clip.name); } @script RequireComponent(Animation)
using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animation))] public class ExampleClass : MonoBehaviour { public Animation anim; void Start() { anim = GetComponent<Animation>(); AnimationClip clip = new AnimationClip(); clip.legacy = true; clip.SetCurve("", typeof(Material), "_Color.a", new AnimationCurve(new Keyframe(0, 0, 0, 0), new Keyframe(1, 1, 0, 0))); clip.SetCurve("", typeof(Material), "_MainTex.offset.x", AnimationCurve.Linear(0, 1, 2, 3)); anim.AddClip(clip, clip.name); anim.Play(clip.name); } }

Property names can be looked up by setting Asset Serialization to Force Text mode in the Editor settings. The text files that are then written by the editor will include the names of the properties. For example, the yaml file written for a Scene object will include the Camera settings. Looking at this yaml file will show:
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
This shows that the name for the FOV parameter is "field of view". If you wanted to create an animation clip to animate the camera field of view, you would pass "field of view" as the propertyName.