Kai*_*Kid 5 c# transform unity-game-engine
在我的 Unity 项目中,我通过脚本动态创建对象。
var btnExit = new GameObject("Player " + ID + "'s Exit Button");
btnExit.transform.SetParent(UI.transform);
Run Code Online (Sandbox Code Playgroud)
我需要设置对象的锚点和枢轴。我应该能够使用它的 RectTransform 组件来做到这一点,就像我在场景编辑器中创建对象时所做的那样。
myRectTransform.anchorMin = new Vector2(1, 0);
myRectTransform.anchorMax = new Vector2(0, 1);
myRectTransform.pivot = new Vector2(0.5f, 0.5f);
Run Code Online (Sandbox Code Playgroud)
但是对象的变换组件不是 RectTransform,只是普通的 Transform。所以我不能将它转换为使用我需要的那些属性。
RectTransform myRectTransform = (RectTransform)btnExit.transform;
Run Code Online (Sandbox Code Playgroud)
那么如何在我通过脚本而不是在场景编辑器中初始化的对象上正确使用 RectTransform 类的功能呢?
小智 8
RectTransform rectTransform = transform.GetComponent<RectTransform>();
RectTransform rectTransform = (transform as RectTransform);
RectTransform rectTransform = (RectTransform)transform;
Run Code Online (Sandbox Code Playgroud)
只要您的对象具有 RectTransform,这些都是从内置transform引用获取 RectTransform 的有效方法。
您无法投射Transform到RectTransform. 这就是GetComponent用途。使用btnExit 变量,您将能够从按钮GetComponent获取。RectTransform
RectTransform myRectTransform = btnExit.GetComponent<RectTransform>();
Run Code Online (Sandbox Code Playgroud)
笔记:
您应该只在调用后执行此操作SetParent,因为如果父对象是 UI 对象(例如 Canvas),SetParentUnity 会自动附加RectTransform到变量。btnExit您还可以使用AddComponent附加RectTransform到该游戏对象。
如果您不执行任何这些操作,您将得到“ nullsinceRectTransform不附加到Button.