- Home /
Content on UI Canvas not appearing when scaled up.
Hi all,
I have a weird issue that I haven't been able to find any answers for.
I'm trying to make a UI Canvas 'pop out' of an object, which I have achieved in past projects by setting the RectTransform's localscale to 0 on start and then increasing it to a desired size once a certain condition is met (usually distance from player) and a bool is set to true.
I've made a short video of the issue occurring, found here: https://www.youtube.com/watch?v=um9H_devl_A
The issue is that when the condition is met and the bool triggered, the canvas increases in scale like it should but none of the content added to that canvas (which I usually do by adding UI elements as child objects) is appearing in either the scene or game view. It seems like they're not refreshing and rendering properly because if I make any changes to any of the UI elements in the scene view / editor, they all suddenly appear and then continue to work normally.
The code I'm using:
using UnityEngine;
using System.Collections;
public class PopOutMenuScript : MonoBehaviour {
[SerializeField]
private GameObject myCanvas;
private Vector3 canvasScale;
private float scaleSpeed = 5f;
public bool growCanvas;
void Start()
{
canvasScale = new Vector3(myCanvas.GetComponent<RectTransform>().localScale.x, myCanvas.GetComponent<RectTransform>().localScale.y, myCanvas.GetComponent<RectTransform>().localScale.z);
myCanvas.GetComponent<RectTransform>().localScale = new Vector3(0, 0, myCanvas.GetComponent<RectTransform>().localScale.z);
}
void Update()
{
if (growCanvas == true)
{
myCanvas.GetComponent<RectTransform>().localScale = Vector3.Lerp(myCanvas.GetComponent<RectTransform>().localScale, canvasScale, scaleSpeed * Time.deltaTime);
}
else
{
myCanvas.GetComponent<RectTransform>().localScale = Vector3.Lerp(myCanvas.GetComponent<RectTransform>().localScale, new Vector3(0, 0, myCanvas.GetComponent<RectTransform>().localScale.z), scaleSpeed * Time.deltaTime);
}
}
}
For what it's worth, I was storing a reference to the RectTransform component and using that instead of performing GetComponent all the time, I thought that might have been a problem but it didn't seem to make a difference.
Any help would be greatly appreciated, thank you.
Your answer

Follow this Question
Related Questions
Two panels to fit the size of the parent panel in Portret mode. 0 Answers
2d image does not scale/stretch correctly 2 Answers
Canvas, instantiate and adjust size of image to fit parent 0 Answers
Scale Layout elements to fit screen 2 Answers
Which is better? Canvas Scaler or scaling transform 1 Answer