Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Question Problem with canvas & UI prefabs

Discussion in 'Scripting' started by LambdaTheDev, Jan 14, 2021.

  1. LambdaTheDev

    LambdaTheDev

    Joined:
    Jan 15, 2020
    Posts:
    57
    Hello guys,
    I started making some UI prefabs to make my work easier. But something wrong happened when using the prefab. It's how it looks like on the canvas I made the prefab (it fits the canvas):

    But when I applied it on the new scene, well...

    ... prefab extends the canvas.

    Does anyone know what can I do?

    EDIT 1
    Both canvases are the same size
     
  2. Kurt-Dekker

    Kurt-Dekker

    Joined:
    Mar 16, 2013
    Posts:
    38,519
    There are underlying reasons this happened and you can track it down by examining everything about each scene's canvas setup and scaling that are different from the other.

    But keep in mind it might not be super-easily to address it in the general case, especially if you start partitioning your UI into chunks.

    An alternate workflow is to put chunks of your UI into separate scenes and then load those scenes additively.

    For instance you might have the following scenes, all loaded additively:

    - content scene (the level, including lighting)
    - player (including camera)
    - the generic UI (score, etc.) (including EventSystem)
    - the weapon UI (ammo, readout)
    - the pause UI (turned off until you press ESC)
    - the Inventory UI
    - etc.

    By keeping those all as separate scenes, you can get away from lots of code to load prefab chunks here and there.
     
  3. Antistone

    Antistone

    Joined:
    Feb 22, 2014
    Posts:
    2,836
    If you want your prefab to always match the parent's size and shape, it's probably better to set its anchors to stretch.

    My best guess at what happened is that the resolution being used for your Game window in the editor changed, and the Canvas automatically changed to match it. (The exact manner of change will vary depending on the settings of your Canvas Scaler, if any.)