Oui il peut en exister une :
InvokeRepeating se fait tout les x temps. Ce temps là, tu le choisis et il peut être ou très court ou très long.
Un Update est soumis à ton temps de rafraîchissement que tupeux setter toi même (fortement déconseillé sauf si tu sais vraiment ce que tu fais) mais qui dépend aussi de la rapidité de tes frames exécutées, ce n'est donc pas un temps fixe (voir l'utilité du FixedUpdate dans ces cas là).
Pour un rafraichissement de distance, il vaut mieux quand même le faire dans un update/fixedUpdate qui est prévu pour. Le InvokeRepeating est généralement pour faire une action que l'on veut répéter à un moment donné, dans un état. Ensuite tu CancelInvoke() pour l'arrêter. Si tu veux arrêter quelque chose dans un update c'est ponctuel, genre avec un booleen, tu laisses une condition quoi.
Moi c'est comme ça que je l'utilise en tout cas, je dis pas que c'est parfait, mais c'est comme ça que je saisis le système. Après, de manière générale, si on peut éviter ce genre de fonction c'est bien aussi, parce que il faut se rendre compte que ça consomme