relativePath | 此曲线应用到的游戏对象的路径。 relativePath 的格式类似于路径名,例如“root/spine/leftArm”。如果 relativePath 为空,则它指的是动画剪辑附加到的游戏对象。 |
type | 动画组件的类类型。 |
propertyName | 正在动画的属性的名称或路径。 |
curve | 动画曲线。 |
将曲线分配给动画特定属性。
如果 curve
为 null,则将删除曲线。如果该属性已经存在曲线,则会用新曲线替换它。
注意: SetCurve
仅适用于传统动画剪辑的运行时。对于非传统 AnimationClips,它是一个仅限编辑器的函数。
以下脚本示例展示了如何使用动画剪辑动画化 GameObject
的位置。使用 SetCurve()
将动画曲线设置为 AnimationClip 上。此示例将 x 偏移量从 1.0 移动到 0.0。
SetCurve API 可用于动画化各种参数。一些典型的组件,如 Transform 和 Material,具有易于访问的变量。例如, Transform 具有 Transform.localPosition 等变量。可以使用 AnimationClip API 动画化 localPosition
的 x、y 和 z 值。查看 Transform 文档以查看变量以及如何动画化它们。
Material 类还链接到可以动画化的变量。这些变量来自用于渲染的着色器。使用材质下拉菜单中的“编辑着色器...”选项可以显示所有可以动画化的参数。通过引用材质参数的 Renderer 类来动画化材质参数。所有可动画化的材质参数都以 material
前缀开头,后跟以下划线开头的属性名称。例如,可以动画化颜色 (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); } }
可以通过将资产序列化设置为“强制文本”模式(在编辑器设置中)来查找属性名称。使用 编辑 -> 项目设置 -> 编辑器
来启用此模式。然后,由编辑器写入的文本文件将包括属性的名称。例如,为场景对象写入的 yaml 文件将包括摄像机设置。查看此 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 参数的名称是“field of view”。如果您想创建动画剪辑来动画化摄像机视场,则应将“field of view”作为 propertyName 传递。
另一个示例是访问 Light
设置。 scene.unity
文件(假设名为 scene
的场景)将包含灯光颜色的字符串。脚本可以通过访问 m_Color
来访问灯光颜色。此示例需要场景中存在灯光才能正常工作。
其他资源: ClearCurves 函数和 AnimationCurve 类。