unity 3d怎么设置动画不循环

大哥大姐哪位知道,unity 3d怎么设置动画不循环?

如图,没有找到LOOP之类的设置啊...

默认就是循环的,怎么取消掉啊。求各位网友告知。谢谢啦
最新回答
长歌与行

2024-11-08 00:26:17

Unity中动画创建后,将会生成一个后缀名为.anim的文件,里面包含着动画内容。

里面有一个属性,叫Loop Time。创建时它默认是勾选的。如果想去掉,可先找到你生成动画时创建的.anim文件。点击它,在右边Inspector栏里面找到Loop Time去掉即可。如图:

当然,如果想通过键盘控制动画执行,需要用到脚本。

这里有一个通过按下Z和X分别来控制动画的例子。新建一个脚本在任意路径,改名为AnimatorTest(或者其他的也可以,但以下代码第三行关键词class后面的AnimatorTest要改成当前文件名,否则将加载失败),打开,改为如下代码:

using UnityEngine;

public class AnimatorTest : MonoBehaviour
{
    public Animator animator;

    // Update is called once per frame
    void Start()
    {
        
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Z))    //此处KeyCode.Z可改,比如改为KeyCode.S,然后按Z就改成了按S
        {
            animator.speed = 0;
        }
        if (Input.GetKeyDown(KeyCode.X))    //同上
        {
            animator.speed = 1;
        }
    }
}

原理很简单:先定义一个Animator对象(不用赋值,添加了这个脚本时里面有个框,将要控制动画的物体拖进去即可)。接下来,判断是否按下Z键,按下就将速度改为0(即停下)。若按下X键,就将速度改为1(即正常速度)。

当然也可以只通过一个键来实现,比如Z键:

using UnityEngine;

public class AnimatorTest : MonoBehaviour
{
    public Animator animator;

    // Update is called once per frame
    void Start()
    {
        
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Z))    //此处KeyCode.Z可改,比如改为KeyCode.S,然后按Z就改成了按S
        {
            if (animator.speed == 1)
            {
                animator.speed = 0;
            }
            else
            {
                animator.speed = 1;
            }
        }
    }
}

保存,接下来打开任意一个物体,在Inspector栏里拖入该脚本(注:最好新建一个物体,将脚本放那里。除非你能确定你这个已有的物体不会影响到代码实现(一般不会))。里面有一个前面是Animator的框。将要控制的物体拖进去。比如我这Main Camera有动画,那我就将脚本放到那里面,然后将Main Camera拖过去,如图:

然后就O了。

我知道这里不会再有人回答,这只是对前一条回答的完善,希望能帮到各位。

怪味

2024-11-08 03:59:43

你看到的有循环方式选择的界面是以前的旧版本的Unity,新版本的已经不存在了,这个问题你完全可以通过代码来控制动画的循环方式的