In my game project, I need to instantiate some ui elements like inventory and dialog windows. I created the corresponding prefab, and tested it by adding it to the scene to see if it worked well. The element created that way is located in the expected place (bottom of the screen and stretched from side to side). The problem starts when I try to instantiate the prefab from code:
var dlgWindow = Instantiate(dlgPrefab);
var canvas = GameObject.Find("Canvas");
var rt = dlgWindow.GetComponent<RectTransform>();
rt.SetParent(canvas.GetComponent<RectTransform>());
Which produces the undesired effect of placing the element in the lower left corner, and resizing it to a small, non visible square. Whats the proper way to do this?