struct in UnityEngine.Experimental.Animations
Switch to ManualHandle for a Component property on an object in the scene.
using UnityEngine; using UnityEngine.Playables; using UnityEngine.Animations;
using UnityEngine.Experimental.Animations;
public struct PropertySceneHandleJob : IAnimationJob { public PropertySceneHandle handleR; public PropertySceneHandle handleG; public PropertySceneHandle handleB; public Color color;
public void ProcessRootMotion(AnimationStream stream) { }
public void ProcessAnimation(AnimationStream stream) { // Set the new light color. handleR.SetFloat(stream, color.r); handleG.SetFloat(stream, color.g); handleB.SetFloat(stream, color.b); } }
[RequireComponent(typeof(Animator))] [RequireComponent(typeof(Light))] public class PropertySceneHandleExample : MonoBehaviour { public Light sceneLight; public Color color = Color.white;
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 Update() { if (sceneLight == null) return;
var animationJob = m_AnimationScriptPlayable.GetJobData<PropertySceneHandleJob>(); animationJob.color = color; m_AnimationScriptPlayable.SetJobData(animationJob); }
void OnDisable() { if (sceneLight == null) return;
m_Graph.Destroy(); } }
See Also: AnimatorJobExtensions.BindSceneProperty, TransformSceneHandle, PropertyStreamHandle, and TransformStreamHandle.
GetBool | Gets the boolean property value from an object in the scene. |
GetFloat | Gets the float property value from an object in the scene. |
GetInt | Gets the integer property value from an object in the scene. |
IsResolved | Returns whether or not the handle is resolved. |
IsValid | Returns whether or not the handle is valid. |
Resolve | Resolves the handle. |
SetBool | Sets the boolean property value to an object in the scene. |
SetFloat | Sets the float property value to an object in the scene. |
SetInt | Sets the integer property value to an object in the scene. |