Legacy Documentation: Version 4.6.2
Language: English
  • C#
  • JS
  • Boo

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

AnimationClip.SetCurve

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

public function SetCurve(relativePath: string, type: Type, propertyName: string, curve: AnimationCurve): void;
public void SetCurve(string relativePath, Type type, string propertyName, AnimationCurve curve);
public def SetCurve(relativePath as string, type as Type, propertyName as string, curve as AnimationCurve) as void

Parameters

type The class type of the component that is animated.
propertyName The name or path to the property being animated.
curve The animation curve.
relativePath Path to the game object this curve applies to. relativePath is formatted similar to a pathname, e.g. "rootrelativePathleftArm". If relativePath is empty it refers to the game object the animation clip is attached to.

Description

Assigns the curve to animate a specific property.

If curve is null the curve will be removed. If a curve already exists for that property, it will be replaced.

Common names are: "localPosition.x", "localPosition.y", "localPosition.z", "localRotation.x", "localRotation.y", "localRotation.z", "localRotation.w" "localScale.x", "localScale.y", "localScale.z".

	// Animates the x coordinate of a transform position

function Start () { // Create the curve var curve : AnimationCurve = AnimationCurve.Linear(0, 1, 2, 3);

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

[RequireComponent(typeof(Animation))]
public class ExampleClass : MonoBehaviour {
    void Start() {
        AnimationCurve curve = AnimationCurve.Linear(0, 1, 2, 3);
        AnimationClip clip = new AnimationClip();
        clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
        animation.AddClip(clip, "test");
        animation.Play("test");
    }
}
import UnityEngine
import System.Collections

[RequireComponent(typeof(Animation))]
public class ExampleClass(MonoBehaviour):

	def Start() as void:
		curve as AnimationCurve = AnimationCurve.Linear(0, 1, 2, 3)
		clip as AnimationClip = AnimationClip()
		clip.SetCurve('', typeof(Transform), 'localPosition.x', curve)
		animation.AddClip(clip, 'test')
		animation.Play('test')

Material properties can be animated using the property name exported in the shader. Common property names are: "_MainTex", "_BumpMap", "_Color", "_SpecColor", "_Emission". How to animate different material property types:

Float properties: "PropertyName"

__Vector4 properties:__ "PropertyName.x", "PropertyName.y", "PropertyName.z", "PropertyName.w"

__Color properties:__ "PropertyName.r", "PropertyName.g", "PropertyName.b", "PropertyName.a"

UV Rotation properties: "PropertyName.rotation"

UV Offset and scale: "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 function, AnimationCurve class.

	// Animate color's alpha and main texture's horizontal offset.

function Start () { var clip = new AnimationClip (); 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)); animation.AddClip (clip, clip.name); animation.Play(clip.name); } @script RequireComponent(Animation)
using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animation))]
public class ExampleClass : MonoBehaviour {
    void Start() {
        AnimationClip clip = new AnimationClip();
        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));
        animation.AddClip(clip, clip.name);
        animation.Play(clip.name);
    }
}
import UnityEngine
import System.Collections

[RequireComponent(typeof(Animation))]
public class ExampleClass(MonoBehaviour):

	def Start() as void:
		clip as AnimationClip = AnimationClip()
		clip.SetCurve('', typeof(Material), '_Color.a', AnimationCurve(Keyframe(0, 0, 0, 0), Keyframe(1, 1, 0, 0)))
		clip.SetCurve('', typeof(Material), '_MainTex.offset.x', AnimationCurve.Linear(0, 1, 2, 3))
		animation.AddClip(clip, clip.name)
		animation.Play(clip.name)