Crie uma barra de progresso radial/circular no Unity

Neste tutorial, mostrarei como fazer uma barra de progresso circular/radial (que também pode ser usada como barra de HP, etc.) em Unity.

Sharp Coder Reprodutor de vídeo

Então vamos começar!

Passos

Precisaremos de uma imagem circular com fundo transparente.

  • Importe a imagem para o seu projeto e altere seu tipo de textura para "Sprite (2D and UI)"

  • Crie um novo Canvas (GameObject -> UI -> Canvas)
  • Clique com o botão direito no objeto Canvas -> UI -> Imagem
  • Atribua um sprite de círculo à imagem de origem e mude sua cor para vermelho
  • Altere o tipo de imagem para "Filled" e o método de preenchimento para "Radial 360" (isso mostrará outra variável chamada Fill Amount que controla quanto da imagem é visível ao longo do círculo)

  • Duplique a imagem, mude sua cor para branco e o Tipo de imagem para "Simple"
  • Mova a imagem duplicada dentro da primeira imagem
  • Altere o tamanho da primeira imagem (aquela com tipo de imagem preenchida) para algo maior (ex. largura: 135 altura: 135)

  • Crie um novo texto (clique com o botão direito na tela -> UI -> Texto)
  • Mude seu alinhamento para o meio-centro

  • Altere a altura do texto para 60 para poder ajustar o texto de carregamento

Por fim, criaremos um script que aplicará o valor do progresso à imagem

  • Crie um novo script, chame-o de "SC_CircularLoading" e cole o código abaixo dentro dele:

SC_CircularLoading.cs

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

public class SC_CircularLoading : MonoBehaviour
{
    public Image loadingImage;
    public Text loadingText;
    [Range(0, 1)]
    public float loadingProgress = 0;

    // Update is called once per frame
    void Update()
    {
        loadingImage.fillAmount = loadingProgress;
        if(loadingProgress < 1)
        {
            loadingText.text = Mathf.RoundToInt(loadingProgress * 100) + "%\nLoading...";
        }
        else
        {
            loadingText.text = "Done.";
        }
    }
}
  • Anexe o script SC_CircularLoading a qualquer objeto e atribua suas variáveis ​​(Loading Image deverá ser a imagem com tipo Radial Fill e Loading Text deverá ser um texto que mostrará o valor do progresso)

  • Pressione Play e mova o controle deslizante Carregando Progresso. Observe a imagem de carregamento preencher gradualmente:

Artigos sugeridos
Trabalhando com o sistema UI do Unity
Criando uma tela de carregamento no Unity
UI da barra HP/Progress/Stamina - Análise do pacote Unity Asset Store
Criando uma UI de tela vencedora no Unity
Criando um menu de pausa no Unity
Criando Simuladores de Voo no Unity
Criando um efeito de filtro de fita VHS no Unity