5.3.5 - Blurry UI text after switching canvasses - until text is refreshed by turning visibility off/on or changing resolution

Hi all,

I have multiple scenes in my project where the canvasses are switched between, each canvas having UI text included on it.

The project was originally created in 5.0 and I have just updated to 5.3.5 and I am now encountering the following issue -

The canvas that is active when the scene first loads displays all UI text just fine, but as soon as I switch to another canvas with the exact same text on, the text on the new canvas is blurred. As soon as I turn the text object off/on (via a button click) it appears to refresh it and it all displays fine again. It is also rectified by changing the display resolution in the editor play window.

It appears as though unless it has a ‘refresh’ through clicking something else, or is on screen when the scene first loads, it appears blurry.

The font is ‘Open Sans Bold’ and I am switching canvasses via a raycast script.

I have read issues of text blurriness in 5.3, but most instances appear to be down to the size of the text being in odd numbers which mine isn’t.

Screenshots attached. The settings shown are the same for all canvasses and text.

Any help would be appreciated.

Thanks in advance


not if you serve this but when I use canvas, do not select the option to “perfect pixel” I do not like past that problem, but if it’s trying.

Did you find any solution to this ? In my case I switch scenes, one without a canvas to one with a canvas on it. When the second scene is loaded the ui looks blurry but if I just build scene 2 everything is nice and crisp. So switching might do something to the canvas scaler ?

I tied your solution (disable the gameobjects where the Text Component sits on via hotkey) but that did not work. After gameobject.SetActive(True) the text apears blurry again.

Some thoughts,
Have you tried using a Material that uses Unity’s UI-Text Shader ? or any material? Forcing a specific Shader will affect text rendering. (i.e. using the wrong one will render blank squares instead of characters, or ignore aliasing because it’s a cut-out shader…)

And is ‘Best Fit’ somehow screwing with the sizing/aliasing ?

Is the text being written before the screen size is known? It’s possible it’s sharper after the refresh, because it has runtime dimension to render to. I am not sure if any of the rendering for UI was changed between versions.

Also, toggling the GameObject or Text after the app is loaded, but before panel is called could be used as a work around.

use gameobject.SetActive(true) instead of canvas.enabled = true can make them update