Prove f is continuous if $f_n \rightarrow f$ is unif continuous? This was a question I came across in a past-year final paper.

Let $(X, d_x), (Y, d_y)$ be metric spaces. For each $n \in \mathbb{N}$ assume that the function $f_n: X \rightarrow Y$ is continuous. Assume $f_n \rightarrow f$ is uniform on X. Prove that f is continuous. 

I know a function is continuous at a point p if $\forall \epsilon >0, \exists \delta >0$ such that $\forall x \in X$, $|x-p| < \delta$ implies that $|f(x) - f(p)| < \epsilon$. 
I also know that uniform continuity occurs when $\forall \epsilon >0, \exists \delta > 0$ such that $\forall x,y \in X, |x-y| < \delta$ implies that $|f_n(x)-f_n(y)| < \epsilon$. 
In a less formal way, I understand that with uniform continuity we need a "uniform" delta that works across the whole space X. I'm guessing I have to set up some sort of epsilon-delta proof, but I'm no idea where to begin. 
 A: Start by writing out what you need to prove. 
You have to show $f$ is continuous; that is to say, for any $p \in X$ the following holds: for every $\epsilon > 0$, there exists a $\delta > 0$ such that $d(f(x), f(p)) < \epsilon$ whenever $d(x, p) < \delta$.
What you're given is that $f_n$ converges to $f$ uniformly; that is, for every $\epsilon > 0$ there is a $N$ such that $d(f_n(x), f(x)) < \epsilon$ for all $n > N$, and $\epsilon$ does not depend on $x$. 
Make use of this: write $d(f(x), f(p)) \leq d(f(x),f_n(x)) + d(f_n(x), f_n(p))+ d(f_n(p), f(p))$ like Henry W. in his answer said. You can choose an $N$ so that the first and third term is smaller than $\epsilon$ for all $n > N$ by uniform convergence. You can choose a $\delta > 0$ so that the middle term is smaller than $\epsilon$ likewise by continuity of $f_n$'s. 
Summing up, you get $d(f(x),f(p)) < 3\epsilon$. As you can choose $\epsilon$ to be as small as you wish and still get a $\delta$ such that this is satisfied, $f$ is continuous as desired.
A: This is well-known as the Uniform Limit Theorem. The crux of the proof lies in the inequality:
$$ d_Y(f(x),f(y)) \leq d_Y(f(x),f_j(x)) + d_Y(f_j(x),f_j(y)) + d_Y(f_j(y),f(y))
$$
The terms $d_Y(f(x),f_j(x))$ and $d_Y(f_j(y),f(y))$ can be adjusted to be smaller than $\epsilon/3$ by choosing suitable $j$. (Since $f_j \to f$ uniformly) After that is done, $y$ can be chosen w.r.t. $x$ and $j$ to make the middle term smaller than $\epsilon/3$.
