首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将转换转换为RectTransform

将转换转换为RectTransform
EN

Stack Overflow用户
提问于 2017-06-13 06:27:02
回答 3查看 12.1K关注 0票数 5

在我的Unity项目中,我通过脚本动态创建对象。

代码语言:javascript
复制
var btnExit = new GameObject("Player " + ID + "'s Exit Button");
btnExit.transform.SetParent(UI.transform);

我需要设置对象的锚点和枢轴。我应该能够使用它的RectTransform组件执行此操作,就像我在场景编辑器中创建对象时所做的那样。

代码语言:javascript
复制
myRectTransform.anchorMin = new Vector2(1, 0);
myRectTransform.anchorMax = new Vector2(0, 1);
myRectTransform.pivot = new Vector2(0.5f, 0.5f);

但对象的变换组件不是RectTransform,而是普通变换。所以我不能强制转换它来使用我需要的那些属性。

代码语言:javascript
复制
RectTransform myRectTransform = (RectTransform)btnExit.transform;

那么,如何在通过脚本而不是在场景编辑器中初始化的对象上正确使用RectTransform类的功能呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-13 06:31:40

不能将Transform转换为RectTransform。这就是GetComponent的用途。在btnExit变量上使用GetComponent,您将能够从按钮获得RectTransform

代码语言:javascript
复制
RectTransform myRectTransform =  btnExit.GetComponent<RectTransform>();

备注

您应该仅在调用SetParent之后执行此操作,因为如果父对象是UI对象(如画布),SetParent将使Unity自动将RectTransform附加到btnExit变量。您还可以使用AddComponentRectTransform附加到该GameObject。

如果你不这样做,你会得到null,因为RectTransform没有连接到Button

票数 0
EN

Stack Overflow用户

发布于 2018-07-21 02:11:20

代码语言:javascript
复制
RectTransform rectTransform = transform.GetComponent<RectTransform>();

RectTransform rectTransform = (transform as RectTransform);

RectTransform rectTransform = (RectTransform)transform;

只要您的对象有一个RectTransform,这些都是从内置transform引用中获取RectTransform的有效方法。

票数 8
EN

Stack Overflow用户

发布于 2018-09-28 17:28:19

您可以直接在游戏对象中添加RectTransform组件,Transform组件将变为Rect Transform

例如:

代码语言:javascript
复制
var btnExit = new GameObject("Player " + ID + "'s Exit Button");
btnExit.AddComponent<RectTransform>();

然后演员们就可以工作了:

代码语言:javascript
复制
RectTransform myRectTransform = (RectTransform)btnExit.transform;

附注:

如果不添加组件,上面的强制转换将抛出错误

代码语言:javascript
复制
InvalidCastException: Cannot cast from source type to destination type.

但是添加了组件后,造型就可以正常工作了。以上代码在Unity 2018.2.5f1 (64位)中进行了测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44509636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档