版本:Unity 6 (6000.0)
语言英语
  • C#

AnimationMode.IsPropertyAnimated

建议更改

成功!

感谢你帮助我们改进 Unity 文档的质量。尽管我们并非能接受所有投稿,但我们确实阅读每一位用户建议的更改并会在适用的情况下进行更新。

关闭

提交失败

由于某种原因,你建议的更改无法提交。请在几分钟后<a>重试</a>。感谢你抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

声明

public static bool IsPropertyAnimated(Object target, string propertyPath);

参数

target 要确定是否包含动画的对象。
propertyPath 要搜索的动画的名称。

返回

bool 是否找到属性搜索。

描述

检查指定的属性是否处于动画模式并正在被动画化。

IsPropertyAnimated 检查属性是否正在被动画化。此检查还需要可以找到属性的对象。

在以下脚本示例中搜索 color。它是 Renderer 对象的一部分。请注意,该示例使用球体 GameObject 和动画文件 color.anim。color.anim 中的颜色动画的颜色从黄色变为蓝色。

// Demo showing how IsPropertyAnimated() can be used to determine if a property
// on an object is being animated. In this example the color in a Renderer is
// animated.

using UnityEngine; using UnityEditor;

public class ExampleClass : EditorWindow { protected GameObject go; protected AnimationClip animationClip; protected float time = 0.0f; protected bool showColor = false;

[MenuItem("Examples/AnimationMode demo")] public static void DoWindow() { var window = GetWindow<ExampleClass>(); window.Show(); }

void OnGUI() { if (go == null) { EditorGUILayout.HelpBox("Select a GO", MessageType.Info); return; }

EditorGUILayout.LabelField("Color slider");

if (animationClip == null) { AnimationMode.StartAnimationMode(); animationClip = AssetDatabase.LoadAssetAtPath<AnimationClip>("Assets/color.anim"); }

if (animationClip != null) { float startTime = 0.0f; float stopTime = animationClip.length; time = EditorGUILayout.Slider(time, startTime, stopTime); }

if (showColor) { EditorGUILayout.LabelField("Red color being animated"); } }

void Update() { if (go == null) return;

if (animationClip == null) return;

if (AnimationMode.InAnimationMode()) { Renderer rend = go.GetComponent<Renderer>();

if (AnimationMode.IsPropertyAnimated(rend, "material._Color.r")) { showColor = true; } else { showColor = false; }

AnimationMode.BeginSampling(); AnimationMode.SampleAnimationClip(go, animationClip, time); AnimationMode.EndSampling();

SceneView.RepaintAll(); } }

// Has a GameObject been selection? public void OnSelectionChange() { go = Selection.activeGameObject; Repaint(); }

public void OnDestroy() { Debug.Log("Shutting down"); AnimationMode.StopAnimationMode(); } }