unity——Preject3——开始界面拼面板

news2025/1/18 12:30:50

目录

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 update
    void Start()
    {
        UIManager.Instance.ShowPanel<BeginPanel>();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

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

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

相关文章

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件&#xff0c;但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别&#xff1a; 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

传统以太网问题与VLAN技术详解

传统以太网的问题 广播域&#xff1a;在网络中能接收同一广播信息的所有设备&#xff08;计算机、交换机&#xff09;等的集合 说明&#xff1a;在一个广播域内&#xff0c;当一个设备发送广播帧时&#xff0c;该域内的所有设备都能接收到这个广播帧。工作原理&#xff1a;在以…

OpenAI Whisper:语音识别技术的革新者—深入架构与参数

当下语音识别技术正以前所未有的速度发展&#xff0c;极大地推动了人机交互的便利性和效率。OpenAI的Whisper系统无疑是这一领域的佼佼者&#xff0c;它凭借其卓越的性能、广泛的适用性和创新的技术架构&#xff0c;正在重新定义语音转文本技术的规则。今天我们一起了解一下Whi…

WPS计算机二级•高效操作技巧

听说这里是目录哦 斜线表头 展示项目名称&#x1f34b;‍&#x1f7e9;横排转竖排&#x1f350;批量删除表格空白行&#x1f348;方法一方法二建辅助列找空值 能量站&#x1f61a; 斜线表头 展示项目名称&#x1f34b;‍&#x1f7e9; 选中单元格&#xff0c;单击右键➡️“设…

RabbitMQ实现延迟消息发送——实战篇

在项目中&#xff0c;我们经常需要使用消息队列来实现延迟任务&#xff0c;本篇文章就向各位介绍使用RabbitMQ如何实现延迟消息发送&#xff0c;由于是实战篇&#xff0c;所以不会讲太多理论的知识&#xff0c;还不太理解的可以先看看MQ的延迟消息的一个实现原理再来看这篇文章…

《Keras 3 在 TPU 上的肺炎分类》

Keras 3 在 TPU 上的肺炎分类 作者&#xff1a;Amy MiHyun Jang创建日期&#xff1a;2020/07/28最后修改时间&#xff1a;2024/02/12描述&#xff1a;TPU 上的医学图像分类。 &#xff08;i&#xff09; 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…

1.17组会汇报

STRUC-BENCH: Are Large Language Models Good at Generating Complex Structured Tabular Data? STRUC-BENCH&#xff1a;大型语言模型擅长生成复杂的结构化表格数据吗&#xff1f;23年arXiv.org 1概括 这篇论文旨在评估大型语言模型&#xff08;LLMs&#xff09;在生成结构…

PyTorch使用教程(2)-torch包

1、简介 torch包是PyTorch框架最外层的包&#xff0c;主要是包含了张量的创建和基本操作、随机数生成器、序列化、局部梯度操作的上下文管理器等等&#xff0c;内容很多。我们基础学习的时候&#xff0c;只有关注张量的创建、序列化&#xff0c;随机数、张量的数学数学计算等常…

idea gradle compiler error: package xxx does not exist

idea 编译运行task时报项目内的包不存在&#xff0c;如果你试了网上的其它方法还不能解决&#xff0c;应该是你更新了新版idea&#xff0c;项目用的是旧版jdk&#xff0c;请在以下编译器设置中把项目JDK字节码版本设为8&#xff08;jdk1.8&#xff0c;我这里是17请自行选择&…

Nmap之企业漏洞扫描(Enterprise Vulnerability Scanning for Nmap)

简介 Namp是一个开源的网络连接端扫描软件&#xff0c;主要用于网络发现和安全审核。‌它可以帮助用户识别网络上的设备、分析它们的服务、检测操作系统类型&#xff0c;甚至发现潜在的安全漏洞。Nmap由Fyodor开发&#xff0c;最初是为了满足网络管理员的需求&#xff0c;但随…

RabbitMQ前置概念

文章目录 1.AMQP协议是什么&#xff1f;2.rabbitmq端口介绍3.消息队列的作用和使用场景4.rabbitmq工作原理5.整体架构核心概念6.使用7.消费者消息推送限制&#xff08;work模型&#xff09;8.fanout交换机9.Direct交换机10.Topic交换机&#xff08;推荐&#xff09;11.声明队列…

RabbitMQ---TTL与死信

&#xff08;一&#xff09;TTL 1.TTL概念 TTL又叫过期时间 RabbitMQ可以对队列和消息设置TTL&#xff0c;当消息到达过期时间还没有被消费时就会自动删除 注&#xff1a;这里我们说的对队列设置TTL,是对队列上的消息设置TTL并不是对队列本身&#xff0c;不是说队列过期时间…

MySQL8数据库全攻略:版本特性、下载、安装、卸载与管理工具详解

大家好&#xff0c;我是袁庭新。 MySQL作为企业项目中的主流数据库&#xff0c;其5.x和8.x版本尤为常用。本文将详细介绍MySQL 8.x的特性、下载、安装、服务管理、卸载及管理工具&#xff0c;旨在帮助用户更好地掌握和使用MySQL数据库。 1.MySQL版本及下载 企业项目中使用的…

хорошо哈拉少wordpress俄语主题

хорошо哈拉少wordpress俄语主题 wordpress俄文网站模板&#xff0c;推荐做俄罗斯市场的外贸公司建俄语独立站使用。 演示 https://www.jianzhanpress.com/?p7360

【STM32-学习笔记-10-】BKP备份寄存器+时间戳

文章目录 BKP备份寄存器Ⅰ、BKP简介1. BKP的基本功能2. BKP的存储容量3. BKP的访问和操作4. BKP的应用场景5. BKP的控制寄存器 Ⅱ、BKP基本结构Ⅲ、BKP函数Ⅳ、BKP使用示例 时间戳一、Unix时间戳二、时间戳的转换&#xff08;time.h函数介绍&#xff09;Ⅰ、time()Ⅱ、mktime()…

Python毕业设计选题:基于python的酒店推荐系统_django+hadoop

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 酒店客房管理 客房类型管理 客房预定管理 用户…

【c++继承篇】--继承之道:在C++的世界中编织血脉与传承

目录 引言 一、定义二、继承定义格式2.1定义格式2.2继承关系和访问限定符2.3继承后子类访问权限 三、基类和派生类赋值转换四、继承的作用域4.1同名变量4.2同名函数 五、派生类的默认成员构造函数5.1**构造函数调用顺序&#xff1a;**5.2**析构函数调用顺序&#xff1a;**5.3调…

Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧

作者&#xff1a;来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后&#xff0c;我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中&#xff0c;我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中&#xff0c;我们将回顾一些最佳实…

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

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

npm的包管理

从哪里下载包 国外有一家 IT 公司&#xff0c;叫做 npm,Inc.这家公司旗下有一个非常著名的网站: https://www.npmjs.com/&#xff0c;它是全球最大的包共享平台&#xff0c;你可以从这个网站上搜索到任何你需要的包&#xff0c;只要你有足够的耐心!到目前位置&#xff0c;全球约…