作用展现与功用描绘
先看作用:
功用描绘:当处于加载状况时,按钮上呈现旋转的 loading 图标,且按钮不可点击;结束加载状况后,loading 图标消失,且按钮可点击。
实现方案与代码示例
- 创立 loadingIcon 目标
工具栏 -> GameObject -> UI -> Image,创立一个具有 Image 组件的游戏目标。
调整 Rect Transform 组件中的 width、height 来调整图标的大小。在 Image 组件中,修正 Source Image 为 loading 图标。
*目标层级怎么放都行,也能够将 loadingIcon 作为 Button 的子目标。脚本绑定时只需要重视「将具有 Button 组件的目标拖到 button 变量,将 loadingIcon 目标拖到 loadingIcon 变量」这个对应联系即可(后面打开介绍)。
- 创立脚本
顶部工具栏 Assets -> Create -> C# Script,命名为 ButtonController.cs
- 编写脚本
思路:
- 支撑两个办法,一个是 loading,启用按钮 loading 状况;另一个是 StopLoading,封闭按钮 loading 状况。
- Loading 办法中,将按钮的可交互状况设为 true,将 loading 图画设置为激活状况,一起设置 loading 状况变量为 true,用于在组件 Update 钩子中执行旋转逻辑。
- StopLoading 办法同上,状况相反,这儿不打开介绍。
- Update 生命周期中,对 loadingIcon 进行旋转
示例代码:
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ButtonController : MonoBehaviour
{
public GameObject button, loadingIcon;
bool loading = false;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if(loading) {
loadingIcon.transform.Rotate(0.0f, 0.0f, 1.0f, Space.World);
}
}
public void Loading() {
button.GetComponent<Button>().interactable = false;
loadingIcon.SetActive(true);
loading = true;
}
public void StopLoading() {
button.GetComponent<Button>().interactable = true;
loadingIcon.SetActive(false);
loading = false;
}
}
- 将脚本拖拽到目标上,再把 button 目标和 loadingIcon 目标拖入变量区域即可
将脚本拖拽到目标上:(脚本放在哪个目标上都能够,跟上边着重的相同,只需要重视脚本中绑定的目标正确即可)
把 button 目标和 loadingIcon 目标拖入变量区域: