The usual "Calculus" definition of convergence of a sequence of functions is
"[itex]\{f_n(x)\}[/itex] converges to f(x) if and only if, for each [itex]x_0[/itex], given [itex]\epsilon> 0[/itex], there exist an integer N such that if n>N then [itex]|f_n(x_0)- f(x_0)|< \epsilon[/itex]"
which looks like a metric statement.
However, you can phrase it more generally as
"[itex]\{f_n(x)\}[/itex] converges to f(x) if and only if, given an open set U containing f(x_0), there exist an integer N such that if n> N then [itex]f_n(x_0)\in U[/itex]" which can be given in any topological space, not just metric spaces.
But the definition of "uniform" convergence of a sequence of functions is
"[itex]\{f_n(x)\}[/itex] converges to f(x) if and only if, for each [itex]x_0[/itex], given [itex]\epsilon> 0[/itex], there exist an integer N such that if n>N then [itex]|f_n(x_0)- f(x_0)|< \epsilon[/itex]"
Do you see the difference? The "for each [itex]x_[/itex]" and "given [itex]\epsilon> 0[/itex]" have been switched. That means that, for a given [itex]\epsilon[/itex] the same N must work for every [itex]x_0[/itex]. Comparing it to the second definition, above, that did not require a metric, it is saying that the open sets, at different [itex]f(x_0)[/itex] must be of the same "size"- and "size" of sets is only defined in metric spaces.