Somente Duvida de acesso componente

1* script
[SerializeField] private TMP_Text dimasColetadosTxt;

public void AtualizarDiamantesColetados(int DimasColetados, int TotalDiamantes)
{
dimasColetadosTxt.text = DimasColetados + “/” + TotalDiamantes;
}

2* script acessado

    if (hit.gameObject.tag == "Dimas")
    {
        dimasColetados++;
        JogadorUI.AtualizarDiamantesColetados(dimasColetados, 5);
        Destroy(hit.gameObject);
    }

me tire uma duvida, se eu ja estou acessando a propriedade de txt, via script nao tem necessidade de editada nada no inspector no campo txt do canvas como por exemplo na aula voce digita 0/5

Depende um pouco de como seu projeto está estruturado, mas normalmente você ainda precisa arrastar a referência do componente TMP_Text do seu Canvas para o campo dimasColetadosTxt no seu script, lá no Inspector.

No entanto, o conteúdo do texto (por exemplo, “0/5”) que aparece na caixa de texto do Inspector não é estritamente necessário, porque assim que o jogo rodar, o valor exibido no TextMeshPro será atualizado pelo script. Então, na prática:

  1. Você precisa garantir que o campo dimasColetadosTxt (o TMP_Text) esteja “linkado” (arrastado) para o script no Inspector, para o script saber qual componente de texto deve alterar.
  2. Não é necessário colocar manualmente “0/5” ou qualquer texto inicial no Inspector, desde que você esteja atualizando o valor do text ao iniciar o jogo também (no método Start ou Awake).

eu reparei que ele atualiza quando pega o primeiro dima
ele nao inicializa com UI 0/5 se caso nao escrever no campo de txt no inspector
ambos funcionam

Se não tiver atualizando inicialmente para exibir 0/5, você pode, no método de Start, chamar:

AtualizarDiamantesColetados(0, 5);

Ou simplesmente, deixar direto na UI já escrito 0/5 inicialmente. O que preferir.