You need to use the uniformity condition. Remember that $f_n$ converges uniformly to $f$ if for every $\varepsilon$, there is an $N$ such that if $n > N$, then $|f_n(x) - f(x)| <\varepsilon$ for all $x \in [a,b]$. So the $f_n(x)$ converge to $f(x)$ at the same speed, in some sense. A common way people visualize this is by taking a band of width $2\varepsilon$ around graph of the limit function $f$, i.e. the set $\{(x,y): y \in [f(x)-\varepsilon, f(x)+\varepsilon]\}$. Now if you graph your $f_n$ too, the uniformity condition implies that $f_n$ lies in this band, if $n$ is sufficiently large. But if $f$ isn't bounded, that requires your $f_n$ to be unbounded.
To formalize this, the argument goes something like this. Let $\varepsilon > 0$. Suppose that $f$ is unbounded. Then for every $M$, there is an $x$ such that $|f(x)|>M$. Furthermore, since $f_n$ converges uniformly to $f$, we know that for some $N$, if $n>N$, we have that $|f(x)-f_n(x)|<\varepsilon$. In particular, if $|f(x)|>M$, $|f_n(x)|>M-\varepsilon$. Since such an $x$ exists for all $M$, $f_n$ is unbounded. Contradicts boundedness of $f_n$. You need to do some work to fix the fact that $f_n$ might be unbounded on some discrete subset of $[a,b]$, but that's the idea.