Version: 2022.3

PropertySceneHandle

struct in UnityEngine.Animations

切换到手册

描述

读取场景中某个对象的 Component 属性的句柄。

PropertySceneHandle 是只读的。

using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Animations;

public struct PropertySceneHandleJob : IAnimationJob { public PropertySceneHandle handleR; public PropertySceneHandle handleG; public PropertySceneHandle handleB;

public void ProcessRootMotion(AnimationStream stream) { }

public void ProcessAnimation(AnimationStream stream) { // Log the light color. var r = handleR.GetFloat(stream); var g = handleG.GetFloat(stream); var b = handleB.GetFloat(stream); Debug.LogFormat("Light color: (R: {0}, G: {1}, B: {2})", r, g, b); } }

[RequireComponent(typeof(Animator))] [RequireComponent(typeof(Light))] public class PropertySceneHandleExample : MonoBehaviour { public Light sceneLight;

PlayableGraph m_Graph; AnimationScriptPlayable m_AnimationScriptPlayable;

void Start() { if (sceneLight == null) return;

var animator = GetComponent<Animator>();

m_Graph = PlayableGraph.Create("PropertySceneHandleExample"); var output = AnimationPlayableOutput.Create(m_Graph, "output", animator);

var animationJob = new PropertySceneHandleJob(); animationJob.handleR = animator.BindSceneProperty(sceneLight.transform, typeof(Light), "m_Color.r"); animationJob.handleG = animator.BindSceneProperty(sceneLight.transform, typeof(Light), "m_Color.g"); animationJob.handleB = animator.BindSceneProperty(sceneLight.transform, typeof(Light), "m_Color.b"); m_AnimationScriptPlayable = AnimationScriptPlayable.Create(m_Graph, animationJob);

output.SetSourcePlayable(m_AnimationScriptPlayable); m_Graph.Play(); }

void OnDisable() { if (sceneLight == null) return;

m_Graph.Destroy(); } }

公共函数

GetBool从场景中的对象获取布尔属性值。
GetFloat从场景中的对象获取浮点属性值。
GetInt从场景中的对象获取整数属性值。
IsResolved返回有关是否已解析句柄的信息。
IsValid返回有关句柄是否有效的信息。
Resolve解析句柄。