柔百科

panel是什么意思(UI元素 Panel and Button)

时间:2024-11-15 09:46:56

3.Panel and Button

3.1 Panel

Panel(面板)本质上就是预先设置好的 Image。可以作为其他 UI 元素的父级。

在层级窗口右击选择 UI -> Panel 即可创建。

如下图所示:

3.2 Button

在层级窗口中右击选择 UI -> Button 即可创建。

Button 元素是由 Image组件、Button组件及其显示文本的 Text 组件构成的。

如下图所示:

Button组件的变量:

包括:Interactable 开关区、Transition 过渡区、Navigation 导航区、监听区四个部分,其中前 3 个区域继承了 Selectable 类,Selectable 组件包括除监听区以外的其他 3 个区域,如果给 Image组件添加 Selectable 组件,就可以形成一个没有监听区的 Button 按钮。

3.2.1 Interactable

用于设置是否可以互动。,不勾选的情况下,该按钮呈不可用状态。

3.2.2 Transition

互动类 UI 元素的 Transition (过渡方式)包括:

  • Color Tint (颜色过渡)
  • Sprite Swap (图像变换)
  • Animation (动画过渡)

每种过渡方式的过渡状态包括:

  • Normal(正常)
  • Highlighted(悬停)
  • Pressed(按下)
  • Selected(选中)
  • Disabled(不可用)

1.Color Tint (颜色过渡)

Color Multiplier(颜色倍数)设置颜色的倍增

Fade Duration(阴影持续时间)设置过渡时间(秒)

2.Sprite Swap (图像变换)

设置不同状态下的图像即可。

3.Animation (动画过渡)

操作步骤:

(1)选择 Button 组件过渡区的 Auto Generate Animation(生成动画)按钮,然后输入名称,自动生成一个 Animator 组件,可以通过 Inspector 面板看到 Button 组件中增加的 Animator 组件,同时,在 Project 面板中也会自动生成动画状态机图标。

只有通过 Auto Generate Animation 按钮生成的动画才会自带动画过渡的 5 种状态。

(2)双击动画状态机图标,打开动画状态机。

(3)选择菜单 Windows -> Animation -> Animation,打开 Animation 面板。

Animation 与 Animator 的区别:Animator 是动画系统面板,用于处理多个动画之间的过渡;Animation 面板是录制具体某个动画关键帧的面板。

(4)在 Animation 面板的左侧 Preview 下面可以通过下拉列表选择每个状态,选择状态后,单击红色点录制动画,录制完毕单击红色点关闭。

3.2.3 Navigation

Navigation 是键盘或者控制器决定以什么顺序选择 UI 元素的控制机制。Navigation 的 6 中模式:

None - 不设置导航

Everything - 全部,勾选后下面的 4 种模式全选

Horizontal - 水平方向,选择键盘或控制器的左右键时,选择所按键方向的下一个 UI 元素,忽略上下键

Vertical - 垂直方向,选择键盘或控制器的上下键时,选择所按键方向的下一个 UI 元素,忽略左右键

Automatic - 自动,选择上下左右键时,选择所按键方向的下一个最合适的 UI 元素

Explicit - 明确,设置上下左右键按键方向的下一个选择的 UI 元素

3.2.4 监听区

监听区可以执行预先设置好的指令,从而使 UI 元素具有一定的功能。Button 元素的监听区为 On Click,也就是单击鼠标时的监听。监听模式包括:

  • Off - 不监听
  • Editor And Runtime - 编辑和运行时都监听
  • Runtime Only - 只在运行时监听

单击监听区的 “+” 按钮会自动添加一个事件。一个监听区可以设置多个监听事件,运行时按住从上到下的顺序来执行。

1.设置监听区实现功能

示例:通过点击按钮让 3D 物体 Cube 换一种材质。

在 Button 的监听区添加事件,将 Cube 拖拽到监听区,在 Function 下拉列表中选择 Mesh Renderer 组件中的变量 Meterial,并设置一个材质,如下图所示:

2.设置 Button 组件的脚本

在 Project 窗口中右击选择 Create -> C# Script,命名为 ButtonClick,双击脚本并编写代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ButtonClick : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

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

    public void OnButtonClick() 
    {
        Debug.Log("The button is clicked.");
    }
}

将 Project 窗口中的 ButtonClick 脚本拖入到 Button 的 Inspector 面板中使其成为组件。

在 Button 的监听区设置:将 Button 拖拽到监听区,选择脚本中的方法。如下图所示:

3.通过挂载脚本实现功能

创建脚本并编写代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ButtonClick : MonoBehaviour
{
    private Button button;
    
    // Start is called before the first frame update
    void Start()
    {
        button = GetComponent<Button>();
        button.onClick.AddListener(OnButtonClick);
    }

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

    void OnButtonClick() 
    {
        Debug.Log("The button is clicked.");
    }
}

上面的代码中,在 Start 方法中获取按钮并为按钮添加事件,将脚本挂载到 Button 组件上即可。