当前位置: 首页 > news >正文

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 的主要功能

  1. 动画状态机

    • Animator Controller 使用状态机(State Machine)来管理动画状态。每个状态代表一个动画片段(如“待机”、“行走”、“奔跑”)。

    • 你可以在状态之间定义过渡(Transitions),并设置条件来控制何时从一个状态切换到另一个状态。

  2. 参数(Parameters)

    • Animator Controller 允许你定义参数(如布尔值、浮点数、整数或触发器),这些参数可以用来控制状态之间的过渡。

    • 例如,你可以使用一个布尔参数 IsWalking 来控制角色是否从“待机”状态切换到“行走”状态。

  3. 动画层(Layers)

    • Animator Controller 支持多层动画,允许你在不同的层上播放不同的动画。例如,你可以在基础层上播放角色的移动动画,同时在另一个层上播放上半身的射击动画。

  4. 混合树(Blend Trees)

    • 混合树允许你根据参数值(如速度或方向)在多个动画之间平滑过渡。例如,你可以根据角色的移动速度在“行走”和“奔跑”动画之间混合。

如何使用 Animator Controller

  1. 创建 Animator Controller

    • 在Unity中,右键点击项目窗口,选择 Create > Animator Controller

    • 将创建的 Animator Controller 分配给游戏对象的 Animator 组件。

  2. 添加动画状态

    • 打开 Animator 窗口(Window > Animation > Animator)。

    • 将动画片段拖放到 Animator 窗口中,创建动画状态。

  3. 设置过渡和条件

    • 右键点击一个状态,选择 Make Transition,然后连接到另一个状态。

    • 在过渡线上设置条件(如参数值),以控制何时触发过渡。

  4. 控制动画

    • 在脚本中,你可以通过 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&#xff0c;去掉panel自带的image&#xff0c;自己加一个image&#xff0c;使用锚点分配好 2.锚点&#xff08;快捷键点击后 ALTShift&#xff09; 锚点是什么&#xff1f; 锚点的实际例子 例子1&#xff1a;固定在父容器的中心 例子2&#xff1a;对齐到…...

【达梦数据库(Oracle模式)】如何将视图中的数据导出

在某些情况下&#xff0c;我们需要将生产环境某个模式下的数据导入到开发电脑中&#xff0c;因为正式环境无法连接外网数据。 方式一&#xff1a;将视图查询出来&#xff0c;然后右键导出所有查询结果&#xff08;不推荐&#xff09; 优点&#xff1a;方便快捷 缺点&#xff1…...

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X&#xff08;车与外界通信&#xff09;的部分&#xff0c;主要关注于通信安全要求&#xff0c;旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层&#xff08;数据无异常&#xff09;、应用…...

FastAPI 应用的容器化与 Docker 部署:提升性能与可扩展性

FastAPI 应用的容器化与 Docker 部署&#xff1a;提升性能与可扩展性 目录 &#x1f433; 使用 Docker 容器化 FastAPI 应用⚙️ 使用 Docker Compose 管理多个服务的部署&#x1f680; 在 Docker 容器中部署与运行 FastAPI 应用 1. &#x1f433; 使用 Docker 容器化 FastAPI…...

QT入门的一些吐槽

QT入门的一些吐槽 看了网上的一些介绍QT的课程&#xff0c;看了一些讲述qt的书籍&#xff0c;然而再想自己做一个项目的时候&#xff0c;却发现我好像什么都不会&#xff0c;QT对我来说就是一个黑盒子。 我只会&#xff1a; 使用QT Creator创建一个项目&#xff0c;再UI文件中…...

4.Spring AI Prompt:与大模型进行有效沟通

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

深入内核讲明白Android Binder【二】

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

Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

TCP 连接状态标识 | SYN, FIN, ACK, PSH, RST, URG

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

WXML模版语法-事件绑定

知识点1&#xff1a;什么是事件 事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为&#xff0c;反馈到逻辑层进行业务的处理。 知识点2&#xff1a;小程序中常用的事件 类型绑定方式事件描述tapbindtap或bind:tap手指触摸后马上离开&#xff0c;类似于…...

楚慧杯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储能能量管理系统是针对工商业储能电站研制的本地化能量管理系统&#xff0c;可实现了储能电站的数据采集、数据处理、数据存储、数据查询与分析、可视化监控、报警管理、统计报表、策略管理、历史曲线等功能。其中策略管理&#xff0c;支持多…...

HTML标签笔记

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

pthread_create函数

函数原型 pthread_create 是 POSIX 线程&#xff08;pthread&#xff09;库中的一个函数&#xff0c;用于在程序中创建一个新线程。 #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 # 安装支持的浏览器&#xff1a;cr, chromium, ff, firefox, wk 和 webkit3、接着在自己的项目下运行录制命令&#xff1a; playwright codegen…...

Linux查看日志命令

问题排查过程&#xff1a; 1. 评估问题现象是否是操作问题&#xff0c;还是服务bug&#xff0c;页面出异常信息是后端&#xff0c;没抛异常信息有可能是前端渲染问题&#xff0c;F12抓包看那个字段没有数据&#xff08;有时候需要前端帮忙确定是哪一个字段&#xff09;&#x…...

(8)ERC20详细介绍

ERC20 是以太坊上的一种代币标准&#xff08;同质化代币&#xff09;&#xff0c;由 Fabian Vogelsteller 在 2015 年提出。它定义了一组通用的接口和规则&#xff0c;使得开发者可以创建可互操作的代币。ERC20 代币在以太坊生态系统中非常流行&#xff0c;广泛应用于各种去中心…...

opencv projectPoints函数 computeCorrespondEpilines函数 undistortPoints函数

opencv projectPoints函数 cv::projectPoints 是 OpenCV 中用于将三维点投影到二维图像平面的函数。它通常用于计算在相机坐标系下的三维点在图像坐标系中的位置&#xff0c;考虑了相机的内参和外参。 函数原型 void cv::projectPoints(InputArray objectPoints,InputArray …...

springboot集成websocket实现实时大量数据,效率性能高

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01; 也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&…...

游戏引擎学习第80天

Blackboard&#xff1a;增强碰撞循环&#xff0c;循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改&#xff0c;以便实现一些新的功能。具体来说&#xff0c;是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏&#xff0c;目标是构建一些更丰富…...

Windows 上的 MySQL 8.4.3 和 WSL(Ubuntu)的 MySQL 8.0.40 之间配置 主从同步

在 Windows 上的 MySQL 8.4.3 和 WSL&#xff08;Ubuntu&#xff09;的 MySQL 8.0.40 之间配置 主从同步&#xff08;Master-Slave Replication&#xff09; 的过程略有不同&#xff0c;因为两者的 MySQL 版本和环境存在差异。以下是详细步骤&#xff0c;帮助你完成跨平台的主从…...

【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

&#xff1a; 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 在本篇文章中&#xff0c;博主将带大家去学习所谓的…...

Sentinel配置流控规则详解

前言 在微服务架构中&#xff0c;流量控制&#xff08;Flow Control&#xff09;是保障服务稳定性的重要手段之一。Sentinel作为一款开源的流量控制、熔断降级Java库&#xff0c;以其丰富的应用场景和完善的监控能力&#xff0c;在微服务保护中扮演了重要角色。本文将详细介绍…...

解锁动态规划的奥秘:从零到精通的创新思维解析(6)

解锁动态规划的奥秘&#xff1a;从零到精通的创新思维解析&#xff08;6&#xff09; 前言&#xff1a; 在动态规划的众多问题中&#xff0c;多状态DP问题是一个非常重要的类别。它的难点在于如何设计合适的状态表示和转移方程&#xff0c;从而高效地解决问题。 多状态DP的核…...

Qwen2.5 3B、7B、14B在文本按照规范进行标准化改写任务上的表现

任务介绍&#xff1a;军事杂志方向资料标准化改写任务 1. 任务目标 本任务的目标是对军事杂志领域的非标准化资料进行改写&#xff0c;确保其符合军事文献的写作规范和标准格式。通过改写&#xff0c;保留原文的核心内容和信息&#xff0c;同时提升语言的准确性、简洁性和专业…...

Oracle报错ORA-01078、LRM-00109

虚拟机异常关机后&#xff0c;rac数据库备机无法启动数据库&#xff0c;报错如下 解决方法&#xff1a; 找到如下路径文件 执行&#xff1a; cp init.ora.016202516818 /u01/app/oracle/product/19.3.0/db/dbs/ mv init.ora.016202516818 initplm2.ora 再次进入命令行sqlpl…...

免费为企业IT规划WSUS:Windows Server 更新服务 (WSUS) 之快速入门教程(一)

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;&#xff0c;收不到通知请将我点击星标&#xff01;“ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…...

Titans 架构中的记忆整合:Memory as a Context;Gated Memory;Memory as a Layer

Titans 架构中的记忆整合 Titans 架构中的记忆整合 Memory as a Context(MAC)变体:在处理长序列数据时,将序列分段,对于当前段 S ( t ) S^{(t)}...