unity——Preject3——开始界面拼面板
目录
1.创建panel,去掉panel自带的image,自己加一个image,使用锚点分配好
2.锚点(快捷键点击后 ALT+Shift)
锚点是什么?
锚点的实际例子
例子1:固定在父容器的中心
例子2:对齐到父容器的左下角
例子3:拉伸以填充父容器
例子4:固定在父容器的右侧,高度随父容器变化
例子5:固定在父容器的顶部,宽度随父容器变化
总结
3.开始面板动作设计
4.Animator Controller认识
Animator Controller 的主要功能
如何使用 Animator Controller
实际应用示例
5.代码部分
6.启动程序Main
1.创建panel,去掉panel自带的image,自己加一个image,使用锚点分配好
2.锚点(快捷键点击后 ALT+Shift)
锚点是什么?
锚点就像是UI元素的“固定点”,决定了UI元素和它的父容器(比如一个面板或画布)之间的关系。你可以把锚点想象成一根“橡皮筋”,一头固定在父容器的某个位置,另一头拉着UI元素。
-
如果父容器的大小变了(比如屏幕尺寸变了),UI元素会根据锚点的设置,自动调整自己的位置或大小。
-
锚点的作用就是告诉UI元素:“你要跟着父容器的哪一部分动?”
锚点的实际例子
例子1:固定在父容器的中心
-
场景:你有一个按钮,希望它永远在屏幕的正中心,不管屏幕大小怎么变。
-
锚点设置:把锚点设置为父容器的中心(
(0.5, 0.5)
)。 -
效果:按钮会一直保持在屏幕中心,不会因为屏幕变大或变小而偏移。
例子2:对齐到父容器的左下角
-
场景:你有一个血条,希望它永远在屏幕的左下角。
-
锚点设置:把锚点设置为父容器的左下角(
(0, 0)
)。 -
效果:血条会一直贴在屏幕的左下角,无论屏幕怎么变化。
例子3:拉伸以填充父容器
-
场景:你有一个背景图,希望它总是填满整个屏幕。
-
锚点设置:把锚点设置为水平和垂直方向都拉伸(
(0, 0)
到(1, 1)
)。 -
效果:背景图会随着屏幕大小变化,自动拉伸或缩小,始终填满整个屏幕。
例子4:固定在父容器的右侧,高度随父容器变化
-
场景:你有一个侧边栏,希望它总是贴在屏幕的右侧,高度和屏幕一样高。
-
锚点设置:
-
水平方向:锚点固定在右侧(
(1, 1)
)。 -
垂直方向:锚点设置为上下拉伸(
(0, 1)
)。
-
-
效果:侧边栏会一直贴在屏幕右侧,高度会随着屏幕高度变化而自动调整。
例子5:固定在父容器的顶部,宽度随父容器变化
-
场景:你有一个标题栏,希望它总是贴在屏幕顶部,宽度和屏幕一样宽。
-
锚点设置:
-
水平方向:锚点设置为左右拉伸(
(0, 1)
)。 -
垂直方向:锚点固定在顶部(
(0.5, 1)
)。
-
-
效果:标题栏会一直贴在屏幕顶部,宽度会随着屏幕宽度变化而自动调整。
总结
锚点就是告诉UI元素:“你要跟着父容器的哪一部分动?”
-
如果你想固定位置,就把锚点设为一个点(比如中心、角落)。
-
如果你想拉伸或填充,就把锚点设为一个范围(比如左右拉伸、上下拉伸)。
-
锚点的设置可以让你轻松实现UI的自适应布局,不用手动调整位置和大小。
3.开始面板动作设计
在Resources文件夹下创建一个动画(用于管理和控制动画状态机的工具)
选择对应的动作素材拖到动画机中
拖到人物中
4.Animator Controller认识
Animator Controller 的主要功能
-
动画状态机:
-
Animator Controller 使用状态机(State Machine)来管理动画状态。每个状态代表一个动画片段(如“待机”、“行走”、“奔跑”)。
-
你可以在状态之间定义过渡(Transitions),并设置条件来控制何时从一个状态切换到另一个状态。
-
-
参数(Parameters):
-
Animator Controller 允许你定义参数(如布尔值、浮点数、整数或触发器),这些参数可以用来控制状态之间的过渡。
-
例如,你可以使用一个布尔参数
IsWalking
来控制角色是否从“待机”状态切换到“行走”状态。
-
-
动画层(Layers):
-
Animator Controller 支持多层动画,允许你在不同的层上播放不同的动画。例如,你可以在基础层上播放角色的移动动画,同时在另一个层上播放上半身的射击动画。
-
-
混合树(Blend Trees):
-
混合树允许你根据参数值(如速度或方向)在多个动画之间平滑过渡。例如,你可以根据角色的移动速度在“行走”和“奔跑”动画之间混合。
-
如何使用 Animator Controller
-
创建 Animator Controller:
-
在Unity中,右键点击项目窗口,选择
Create > Animator Controller
。 -
将创建的 Animator Controller 分配给游戏对象的
Animator
组件。
-
-
添加动画状态:
-
打开 Animator 窗口(
Window > Animation > Animator
)。 -
将动画片段拖放到 Animator 窗口中,创建动画状态。
-
-
设置过渡和条件:
-
右键点击一个状态,选择
Make Transition
,然后连接到另一个状态。 -
在过渡线上设置条件(如参数值),以控制何时触发过渡。
-
-
控制动画:
-
在脚本中,你可以通过
Animator
组件的 API 来设置参数值,从而控制动画的播放和切换。例如:csharp
复制
Animator animator = GetComponent<Animator>(); animator.SetBool("IsWalking", true);
-
实际应用示例
-
角色动画:控制角色的待机、行走、奔跑、跳跃等动画。
-
物体动画:控制门的开关、平台的移动等。
-
复杂动画逻辑:通过多层动画和混合树实现复杂的动画行为,如角色在移动时同时进行攻击。
总之,Animator Controller 是Unity中用于管理动画的核心工具,通过状态机、参数和过渡,你可以实现复杂的动画逻辑和交互。
5.代码部分
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class BeginPanel : BasePanel
{public Button btnStart;public Button btnSetting;public Button btnAbout;public Button btnQuit;public override void Init(){btnStart.onClick.AddListener(() =>{//隐藏自己 显示选角面板});btnSetting.onClick.AddListener(() =>{//显示设置界面});btnAbout.onClick.AddListener(() =>{//后续自己添加功能});btnQuit.onClick.AddListener(() =>{Application.Quit();});}
}
6.启动程序Main
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Main : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){UIManager.Instance.ShowPanel<BeginPanel>();}// Update is called once per framevoid Update(){}
}
相关文章:

unity——Preject3——开始界面拼面板
目录 1.创建panel,去掉panel自带的image,自己加一个image,使用锚点分配好 2.锚点(快捷键点击后 ALTShift) 锚点是什么? 锚点的实际例子 例子1:固定在父容器的中心 例子2:对齐到…...
【达梦数据库(Oracle模式)】如何将视图中的数据导出
在某些情况下,我们需要将生产环境某个模式下的数据导入到开发电脑中,因为正式环境无法连接外网数据。 方式一:将视图查询出来,然后右键导出所有查询结果(不推荐) 优点:方便快捷 缺点࿱…...

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求
背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X(车与外界通信)的部分,主要关注于通信安全要求,旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层(数据无异常)、应用…...
FastAPI 应用的容器化与 Docker 部署:提升性能与可扩展性
FastAPI 应用的容器化与 Docker 部署:提升性能与可扩展性 目录 🐳 使用 Docker 容器化 FastAPI 应用⚙️ 使用 Docker Compose 管理多个服务的部署🚀 在 Docker 容器中部署与运行 FastAPI 应用 1. 🐳 使用 Docker 容器化 FastAPI…...
QT入门的一些吐槽
QT入门的一些吐槽 看了网上的一些介绍QT的课程,看了一些讲述qt的书籍,然而再想自己做一个项目的时候,却发现我好像什么都不会,QT对我来说就是一个黑盒子。 我只会: 使用QT Creator创建一个项目,再UI文件中…...

4.Spring AI Prompt:与大模型进行有效沟通
1.什么是提示词 在人工智能领域,提示词(Prompt)扮演着至关重要的角色,它宛如一把精准的钥匙,为 AI 大模型开启理解之门。作为向模型输入的关键信息或引导性语句,提示词能够助力模型迅速洞悉问题需求&#…...

深入内核讲明白Android Binder【二】
深入内核讲明白Android Binder【二】 前言一、Binder通信内核源码整体思路概述1. 客户端向服务端发送数据流程概述1.1 binder_ref1.2 binder_node1.3 binder_proc1.4 binder_thread 2. 服务端的binder_node是什么时候被创建的呢?2.1 Binder驱动程序为服务创建binder…...

Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)
博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇dz…...

TCP 连接状态标识 | SYN, FIN, ACK, PSH, RST, URG
注:本文为“TCP 连接状态标识”相关文章合辑。 TCP 的状态:SYN, FIN, ACK, PSH, RST, URG 简介及 ACK 确认机制 llzhang_fly 于 2020-09-19 05:25:26 发布 1、TCP 的状态 FLAGS 字段状态 在 TCP 层,有个 FLAGS 字段,这个字段有…...

WXML模版语法-事件绑定
知识点1:什么是事件 事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。 知识点2:小程序中常用的事件 类型绑定方式事件描述tapbindtap或bind:tap手指触摸后马上离开,类似于…...
楚慧杯Web
WEB1 计算器 import requests rrequests.session() data{"answer":0} url"" for i in range(30):if i0:rrequests.get(url)dr.textdd.split(":")[22][1:].split("<br>")[0]data["answer"]str(eval(d))print(eval(d)…...

工商业储能电站能量管理本地系统及多站点云平台
一、储能站就地监控 Acre1-2000MG储能能量管理系统是针对工商业储能电站研制的本地化能量管理系统,可实现了储能电站的数据采集、数据处理、数据存储、数据查询与分析、可视化监控、报警管理、统计报表、策略管理、历史曲线等功能。其中策略管理,支持多…...

HTML标签笔记
黑马程序员视频地址:黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 标题与段落 标题 <h1>~<h6> 段落 <p…...

pthread_create函数
函数原型 pthread_create 是 POSIX 线程(pthread)库中的一个函数,用于在程序中创建一个新线程。 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *a…...
C# 并发和并行的区别--16
目录 并发和并行 一.并发 定义 特点 代码示例 代码解释 二.并行 定义 特点 在C#中的体现 代码示例 代码解释 三.并发和并行的区别 四 .如何在C#中选择并发还是并行 1.考虑任务类型 2.代码示例 3.注意事项 五.总结 并发和并行 在编程领域,并发和并行是两个密切…...

Java日志配置
1.导入依赖 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.23.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupI…...

python中的RPA->playwright自动化录制脚本实战案例笔记
playwright录制功能使用绕过登录操作 1、首先安装playwright pip install playwright2、 安装支持的浏览器 playwright install # 安装支持的浏览器:cr, chromium, ff, firefox, wk 和 webkit3、接着在自己的项目下运行录制命令: playwright codegen…...

Linux查看日志命令
问题排查过程: 1. 评估问题现象是否是操作问题,还是服务bug,页面出异常信息是后端,没抛异常信息有可能是前端渲染问题,F12抓包看那个字段没有数据(有时候需要前端帮忙确定是哪一个字段)&#x…...
(8)ERC20详细介绍
ERC20 是以太坊上的一种代币标准(同质化代币),由 Fabian Vogelsteller 在 2015 年提出。它定义了一组通用的接口和规则,使得开发者可以创建可互操作的代币。ERC20 代币在以太坊生态系统中非常流行,广泛应用于各种去中心…...
opencv projectPoints函数 computeCorrespondEpilines函数 undistortPoints函数
opencv projectPoints函数 cv::projectPoints 是 OpenCV 中用于将三维点投影到二维图像平面的函数。它通常用于计算在相机坐标系下的三维点在图像坐标系中的位置,考虑了相机的内参和外参。 函数原型 void cv::projectPoints(InputArray objectPoints,InputArray …...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...