Csh*_*est 4 c# transform panel rect unity-game-engine
我正在实例化一个GO,它有一个面板组件(RectTransform)作为场景中存在的画布的子代:
_heroSelectUI = (GameObject)Instantiate (_heroSelectUIPrefab, GameObject.Find ("Canvas").GetComponent<Transform>());
Run Code Online (Sandbox Code Playgroud)
创建它时,它获得以下值:
"左","上","右"和"下"得到一些不需要的值(可能是由于现有的画布似乎具有相同的值).
面板预制值为0,如何在实例化后将它们设置为0?我找不到RectTransform的正确变量.
根据文件
对于拉伸Rect变换,使用offsetMin和offsetMax属性设置位置可能更简单.该offsetMin属性指定相对于左下角锚矩形的左下角的角落.该offsetMax属性指定相对于右上角锚矩形的右上角的角落.
尝试做如下:
RectTransform rt = _heroSelectUI.GetComponent<RectTransform>();
rt.offsetMin = rt.offsetMax = Vector2.zero ;
Run Code Online (Sandbox Code Playgroud)
另外,根据文档,您可以在设置父级时尝试执行此操作:
使用Instantiate方法将UI元素的预制件正常实例化.设置实例化UI元素的父元素时,建议使用Transform.SetParent方法并将worldPositionStays参数设置为false.
_heroSelectUI = (GameObject)Instantiate (_heroSelectUIPrefab, GameObject.Find ("Canvas").GetComponent<RectTransform>(), false);
Run Code Online (Sandbox Code Playgroud)
要么 :
_heroSelectUI = (GameObject)Instantiate (_heroSelectUIPrefab );
_heroSelectUI.GetComponent<Transform>().SetParent( GameObject.Find ("Canvas").GetComponent<RectTransform>(), false ) ;
Run Code Online (Sandbox Code Playgroud)