unity动画_UI动画案例 c#

news2025/7/18 18:09:11

首先我们打开一个项目

在这个初始界面我们需要做一些准备工作

创建基础通用包

在场景上创建一个Cube

选中Cube 在Window下点击Animation拖拽至运行窗口

点击创建

保存后

这个操作是给Cube添加了一个组件

对Cube_添加一个Position动画

设置几个帧位置的坐标(x,y,z)值

点击运行测试

再创建一个Animator

Animator(动画控制器):控制游戏对象的动画状态机,允许以交互式和可编程控制对象的动画

Animation(动画剪辑)  :剪辑动画数据

Animation Controller : 是通过若干个状态组成的

 Animation Clip 具体动画 :具体动画 用于创建、定义和管理游戏对象动画的一种资源 

Motion 绑定动作 :将创建的动画绑定在 Motion中

Animation结构:

引入结束

接下来我们开始做UI动画:

我们先将Cube删除

在UI文件夹的Images添加一个图片背景

创建一个画布

重置Canvas位置 并调成世界坐标

在Canvas下创建一个Image 并调成不显示 作为一个主面板

修改长和宽并调成不显示状态

改名为MainPanel 作为主面板

在主面板下创建一个Image

导入外边框资源  并设置成精灵

 设置固定尺寸

再在Contentimage下创建按钮Button

我们再多次创建button设置背景和字体颜色的时候 可以copy设置好的组件复制即可

粘贴到新的button上

ctrl + d复制五个并修改名字

copy

修改图片

接下来我们进入设置UI动画部分

首先给MainPanel增加 Animator动画控制器 

这时Animator 需要 绑定Animator Cotroller但是现在我们还没有Animator Cotroller需要自己创建

改名MainPanel

此时就可以把刚创建的Animator Controller 绑定MainPanel

双击Animator Controller打开

创建一个打开状态

我们发现新创建的Opened状态 的 Motion并没有绑定动画,这时需要我们创建一个Animation

现在就可以把动画绑定在Opened状态的Motion上了

接下来制作Opened动画

作为主菜单只需要一个位置

Opened状态做好了,接下来我们做Closed状态

对关闭状态添加一个位置

设置好后我们接下来做一个切换

在Animator中我们可以看出运行后是一个打开主菜单的UI页面

建立连接线——过渡

再建立往返连接线

运行项目我们可以看到主菜单在循环做打开和关闭的两个状态的转换

点击Animator的Opened进入Closed的连接线在右侧我们可以添加一个限制条件

但是我们在添加条件前需要创建参数

我们添加一个bool类型的参数作为一个开启关闭的开关

改名IsOpen

有了参数之后我们就可以在连接线(过渡)上添加条件了

修改条件限制

取消延迟播放时间

快速创建 第二个菜单

选中SecondPanel 点击Window下的Animation的create

接下来再添加一个Second_Closed

对Second_Opened增加一个位置性质

同样方法设置第二个菜单的关闭状态

Animation做好之后做Animator部分

首先添加一个IsOpened参数

接下来连接线做过渡

设置线

做好两个菜单的动画和动画控制器之后   创建一个脚本

脚本名称为 AnimationParameteController动画参数控制器

using UnityEngine;
public class AnimationParameteController : MonoBehaviour{
    public Animator main_Ani;
    public Animator second_Ani;
    void Start()
    {
        
    }
    void Update()
    {
        
    }
    public void OnClick_OpenSecond() {
        if (main_Ani == null || second_Ani == null)
            return;
        main_Ani.SetBool("IsOpen", false);
        second_Ani.SetBool("IsOpen", true);
    }
    public void OnClick_SecondBack()
    {
        if (main_Ani == null || second_Ani == null)
            return;
        main_Ani.SetBool("IsOpen", true);
        second_Ani.SetBool("IsOpen", false);
    }
}

在unity场景中创建一个空物体挂载代码 

命名为AnimationParameteController

接下来绑定UI菜单

再绑定事件 选择Second_Panel 下的 Btn1 Open设置成函数中的打开

选择事件的方法

同样方法做Second_Opend的 Exitbutton按钮

打开MainMenu_Opend的开启状态

运行即可点击按键启动UI动画

接下来我们做左侧的旋转UI动画

我们的下面三个菜单 可以做一个旋转Animator

但是需要注意:如果用同一个Animator也就是同一个动画器的话需要让子类名字都必须相同

我们开始制作这个动画

再添加一个Item_Closed.anim的动画

我们先将除了Item的两个第三菜单隐藏

改变它的y轴我们让它旋转但却发现不是我们想要的单侧旋转而是中心旋转

我们通过修改子物体x的位置作为轴使父物体按子物体中心旋转

修改父物体旋转角度即可看到完成了开门式旋转

接下来我们对Item_Opend做具体动画Animation

删除role和music复制两个Item 进行绑定 主菜单的剩下三个按钮事件

最后完善添加隐藏   选择面板下的Image属性的内容 关闭时将内容隐藏 如果没有image关闭后 animator会失效

添加后取消勾选

End

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1103569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP 如何查看php函数源码

一、在git找到php对应的版本 找到对应的分支版本可以下载也可以在线直接查看 通过这个地址 https://github.com/php/php-src 二、下面已shuffle函数举例,版本为7.4 找到对应的版本进入 点击ext,这个文件夹里面是存放函数的目录 在文件夹里搜不到stu…

Linux使用rpm包安装mysql5.7

以前安装过mysql 前言:检查以前是否装有mysql rpm -qa|grep -i mysql安装了会显示:   bt-mysql57-5.7.31-1.el7.x86_64 停止mysql服务和删除之前安装的mysql rpm -e bt-mysql57-5.7.31-1.el7.x86_64查找并删除mysql相关目录 find / -name mysql/va…

react+ts手写cron表达式转换组件

前言 最近在写的一个分布式调度系统,后端同学需要让我传入cron表达式,给调度接口传参。我去了学习了解了cron表达式的用法,发现有3个通用的表达式刚好符合我们的需求: 需求 每天 xx 的时间: 0 11 20 * * ? 上面是…

jQuery+AJAX请求的统一封装

记录一下使用jQueryAJAX对http请求的统一封装 很久都没有使用jquery和ajax的组合了,这里记录一下jquery和ajax的组合简单封装 将来或许有机会重新启用这个组合 新建jquery.request.js;demo目录结构如下 const baseURL http://127.0.0.1:8116;// con…

4K壁纸小程序源码 全内容自动采集

全内容自动采集 4K壁纸小程序源码,带流量主。用的都是一个接口,不过这个不知是谁改的,成了LSP版,是真色啊,专搜小姐姐。 4K壁纸,静态壁纸,头像等都有保留,界面广告位很多&#xff0c…

List小练习,实现添加图书,并且有序遍历

SuppressWarnings({"all"})public static void main(String[] args) {List list new LinkedList(); // List list new Vector(); // List list new ArrayList();list.add(new Book1("红楼小梦",35.5,"曹雪芹"));list.add(new B…

算法-堆/归并排序-排序链表

算法-堆/归并排序-排序链表 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/sort-list/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 优先级队列构建大顶堆 2.1 思路 优先级队列构建小顶堆链表所有元素放入小顶堆依次取出堆顶…

【Java 进阶篇】JavaScript BOM History 详解

当用户浏览网页时,可以使用JavaScript的BOM (Browser Object Model)中的History对象来访问浏览器的历史记录。这个对象允许您在不更改页面的情况下导航到不同的历史记录项,或者查看有关用户访问过的页面的信息。 在本篇博客中,我们将围绕Jav…

IIS7.0解析漏洞

IIS7.0解析漏洞 实验环境 windows server 2008 r2(x64) IIS 7 phpStudyIIS 2016版本 漏洞条件 1. php.ini里的cgi.cgi_pathinfo1 2. IIS7在Fast-CGI运行模式下 漏洞复现 先搭建IIS7 出现如下界面安装成功 安装phpstudy ,使用较老的版…

通过核密度分析工具建模,基于arcgis js api 4.27 加载gp服务

一、通过arcmap10.2建模,其中包含三个参数 注意input属性,选择数据类型为要素类: 二、建模之后,加载数据,执行模型,无错误的话,找到执行结果,进行发布gp服务 注意,发布g…

Vue3语法-双向绑定

点击加入精英计划可以加入 点击名字可以删除 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- vue.js --><script src"https://unpkg.com/vue3/dist/vue.glob…

Nested loop(PostgreSQL 14 Internals翻译版)

连接类型和方法 连接是SQL语言的一个关键特性;它们是其力量和灵活性的基础。行集(要么直接从表中检索&#xff0c;要么作为某些其他操作的结果接收)总是成对连接。 有几种类型的连接&#xff1a; 内连接。 内连接(指定为“INNER JOIN”或简称为“JOIN”)由满足特定连接条件的…

单一职责模式

三、单一职责模式 单一职责模式概念1、装饰着模式&#xff08;Decorator&#xff09;动机&#xff08;Motivation)模式定义代码具体实现要点总结 2、桥模式&#xff08;Bridge&#xff09;动机 &#xff08;Motivation)模式定义代码具体实现要点总结 单一职责模式概念 在软件组…

MTK APP实现动态修改logo和开机动画

MTK APP实现动态修改logo和开机动画 前言一、修改对新分区的权限1.修改开机动画对新分区的权限2.修改系统APP对新分区的权限3.修改SE权限,不然编译会报错4.修改开机动画文件&#xff0c;让其加载新分区中的文件 二、系统APP代码使用1.系统app修改开机logo2.系统app修改开机动画…

设计模式:工厂方法模式(C#、JAVA、JavaScript、C++、Python、Go、PHP):

本节主要介绍设计模式中的工厂方法模式。 简介&#xff1a; 工厂方法模式&#xff0c;它是对简单工厂模式的进一步抽象化&#xff0c;其好处是可以使系统在不修改原来代码的情况下引进新的产品&#xff0c;即满足开闭原则。 它定义了一个用于创建对象的工厂接口&#xff0c;让…

Nginx正向代理,反向代理,负载均衡

Nginx正向代理&#xff0c;反向代理&#xff0c;负载均衡 Nginx当中有两种代理方式&#xff1a; 七层代理&#xff08;http协议&#xff09; 四层代理&#xff08;tcp/udp流量转发&#xff09; 七层代理&#xff1a;七层代理&#xff0c;代理的是http的请求和响应 客户端请求…

Redis RDB持久化

前言 我们知道 Redis 之所以快&#xff0c;很大程度是因为它的数据直接放在内存里&#xff0c;而内存是易失性存储器&#xff0c;只有通电才存储数据&#xff0c;断电数据就会丢失。 这个时候就要看你的应用场景了&#xff0c;如果你只是拿 Redis 做关系型数据库的缓存&#x…

SpringBoot实现SSMP整合

一、整合JUnit 1、Spring 整合 JUnit 核心注解有两个&#xff1a; RunWith(SpringJUnit4ClassRunner.class) 是设置Spring专用于测试的类运行器&#xff08;Spring程序执行程序有自己的一套独立的运行程序的方式&#xff0c;不能使用JUnit提供的类运行方式&#xff09;Conte…

Deep Learning(0-14草履虫)

深度学习解决的问题 自动提取出最合适的特征 深度学习应用 神经网络基础 损失函数 前向传播 反向传播 绿色字体为正向传播i输入&#xff0c;红色字体为反向传播梯度 MAX门单元只把梯度传给最大的 神经网络整体架构 激活函数 隐藏层激活函数 一般选择Relu&#xff0c;sigmoid会…

STM32 IWDGWWDG

STM32 IWDG&WWDG 启动看门狗之后&#xff0c;看门狗是不能再被关闭的&#xff0c;除非发生复位。 IWDG独立看门狗 独立看门狗配置流程 开启LSI时钟&#xff0c;只有LSI时钟开启了&#xff0c;独立看门狗才能运行。 但是开启LSI的代码&#xff0c;并不需要我们来写&#xf…