让我们说我们的场景上有一个3d游戏对象,上面有单个动画,因此我应该怎么做才能使用滑块控制其动画,例如如果更改动画的滑块值将根据该值进行播放>
答案 0 :(得分:0)
我假设您已经使用其动画创建了一个动画师。
您只需要知道每次修改滑块值时都会调用回调onValueChanged。因此,您可以在其中设置新的动画模式。
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class SliderAnimator : MonoBehaviour
{
public Slider mainSlider;
public Animator anim;
public void Start()
{
//Adds a listener to the main slider and invokes a method when the value changes.
mainSlider.onValueChanged.AddListener(delegate {ValueChangeCheck(); });
}
// Invoked when the value of the slider changes.
public void ValueChangeCheck()
{
//Here we set the animation
switch((int)mainSlider.value){
case 0:
//Set first animation
anim.SetBool("FirstAnimationName", true);
break;
case 1:
//Set second animation
anim.SetBool("SecondAnimationName", true);
break;
default:
break;
}
//To avoid casting the mainSlider.value
if(mainSlider.value >= 0 && mainSlider.value < 0.5f)
{
//Set first animation
anim.SetBool("FirstAnimationName", true);
}
if(mainSlider.value >= 0.5f && mainSlider.value <= 1f)
{
//Set second animation
anim.SetBool("SecondAnimationName", true);
}
}
}
答案 1 :(得分:0)
我想您想要一个类似于VideoPlayer(例如youtube视频播放器)但带有动画的内容。从这里开始:https://docs.unity3d.com/ScriptReference/AnimationState-time.html
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour
{
public Animation anim;
public float animationTime;// attach your slider value to this float
void Update()
{
anim["Walk"].time = animationTime;
}
}