找回密码
 立即注册
查看: 453|回复: 0

[简易教程] unity入门基础-动画系统

[复制链接]
发表于 2023-3-26 17:05 | 显示全部楼层 |阅读模式
目录:
1.Animation
2.UI动画例子1.Animation





Image

AnimationCilp 实际上是物体(对象)的一个一个动画信息,而我们需要去对这一系列的动画进行有效的管理我们则需要Animator对我们的Animation Cilp 进行管理;
动画系统的更加详细的操作
https://blog.csdn.net/m0_51743362/article/details/123459675



Image

动画的优先级很高,在动画播放中无法调整期参数。
Transitions





Image



Image

Transitions 用于动画与动画间的转化
动画过渡:是指一个动画状态过渡到另外一个时发生的行为事件。
各个参数的含义:
Has Exit Time:在Exit Time时刻发生过渡动作。如果勾选此项,并且设置了过渡条件,则需要到达Exit Time 并且满足过渡条件才能发生过渡的动作。两者有一个不满足都不会发生过渡动作。 如果希望满足了过渡条件就立即发生过渡动作,建议取消勾选此项。
Transition Duration:从一个动画过渡到另一个动画需要的时间。如果勾选了Fixed Duration,时间的单位为秒。
Transition Offset:意思为一个动画过渡到另一个动画,另一个动画从哪里开始(如果你的Transition Offset为0.5,动画会在50%处开始播放,并不会从0%开始播放)。
Interruption Source:打断优先级。如果 一个动画正在播放,突然某个动画达到了播放条件,则会打断正在播放地动画,播放达到条件的动画。
Conditions:决定动画过渡在何时被触发。一个Condition包括:1.一个事件的参数。 2.一个可选的断言。3.一个可选的参数值
Animation Parameters(动画参数) *Animation Parameters:是一系列在动画系统中定义的变量,可以通过脚本来进行访问和赋值。



Image

在Animator中的Parameters中可以设置动画参数,点击右上角的加号。参数的四种类型:
Float:浮点型
Int:整型
Bool:布尔型
Trigger:触发一个布尔值设置后,就可以在脚本中使用Animator类函数来赋值,包括SetTrigger,SetFloat,SetInterger和SetBool.
2.UI动画例子

其实UI动画相关使用Dowteen插件完成效果会更好
这里给出 dowteen 的学习地址
http://dotween.demigiant.com/documentation.php
下面是一个UI切换的实例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System;

public class Scene_switching: MonoBehaviour
{
    [SerializeField]
    public GameObject eventObj;

    public Button btnA;
    public Button btnB;
    public Animator animator;


    void Start()
    {
        GameObject.DontDestroyOnLoad(this.gameObject);
        GameObject.DontDestroyOnLoad(this.eventObj);
        //在场景切换的时候,不销毁UI

        btnA.onClick.AddListener(loadSceneA);
        btnB.onClick.AddListener(loadSceneB);
    }
    private void loadSceneA()
    {
        StartCoroutine(LoadScene(1));
    }
    private void loadSceneB()
    {
        StartCoroutine(LoadScene(2));
    }
    // IEnumerator 是 unity 中协程
    IEnumerator LoadScene(int index)
    {
        //预先设定好animator 中的值
        animator.SetBool("Fadein", true);
        animator.SetBool("Fadeout", false);

        yield return new WaitForSeconds(1);//等待一秒

        //使用异步加载方式在完成的回调中调用淡出动画
        AsyncOperation async = SceneManager.LoadSceneAsync(index);
        async.completed += OnLoadedScene;

    }

    private void OnLoadedScene(AsyncOperation obj)
    {
        animator.SetBool("Fadein", false);
        animator.SetBool("Fadeout", true);
    }
}




Image


动画状态机



Image

在动画处理的时候要将动画融合与动画取消



Image

将动画循环取消



Image

参考
unity 官方文档
Silverjay银鸟工作室 SC101
Unity教程:制作场景切换过度效果
https://www.bilibili.com/video/BV1po4y1m7VY/?spm_id_from=333.337.search-card.all.click&vd_source=0df4a29627bff147b126992284147c5c

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 18:46 , Processed in 0.092131 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表