微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以编程方式更改 Unity 中 Rect Transform 组件的比例?

如何解决如何以编程方式更改 Unity 中 Rect Transform 组件的比例?

我想以编程方式修改附加到我的“损坏弹出”游戏对象的矩形变换组件的缩放参数(特别是 x 缩放),如附图所示;但是,我似乎无法修改此值。我尝试了几种方法(如下所示的代码),但似乎没有任何效果

非常感谢任何帮助或指导!

Unity中的Rect Transform组件(图片):

Rect Transform component in Unity (image)

Vector3 rectScale;
RectTransform rectTransform;
float xScale;

// Start is called before the first frame update
void Start()
{
         
    rectTransform = GetComponent<RectTransform>();
    rectScale = rectTransform.localScale;
    rectScale = new Vector3(3f,transform.localScale.y,transform.localScale.z); //this doesn't work
    xScale = rectTransform.localScale.x;
    xScale = *any number*; // this doesn't work
   
}

void Update()
{
    rectScale = new Vector3(3f,transform.localScale.z); //this doesn't work
    xScale = *any number* //this doesn't work
}

解决方法

这里的问题似乎更像是对 c# 一般工作方式的误解!

xScale = 3f; 

为字段 xScale 分配一个新值。它以前的任何价值现在都被遗忘了,现在是 3f。与

相同
rectScale = new Vector3(3f,transform.localScale.y,transform.localScale.z);

为字段 rectScale 分配一个新值。它之前的任何向量值都被遗忘了,现在它的值是 (3f,transform.localScale.z)

两者都不会改变 rectTransform.localScalerectTransform.localScale.x 的值!

您宁愿为 rectTransform.localScale 分配一个新值,例如

recTransform.localScale = new Vevtor3 (3f,rectTransform.localScale.y,rectTransform.localScale.z);

或者在不多次访问同一属性的情况下更高效

var scale = rectTransform.localScale;
scale.x = 3f;
recTransform.localScale = scale;

顺便说一句,专门针对 RectTransform,您可能更愿意使用 sizeDelta 来缩放实际的 rect。使用 localScale 会导致内容和任何子项看起来拉伸

var scale = rectTransform.sizeDelta:
scale.x = 3f;
recTransform.sizeDelta = scale;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。