-1 c# transform rect scale unity-game-engine
我想以编程方式修改附加到“损坏弹出”游戏对象的矩形变换组件的“缩放”参数(特别是 x 缩放),如附图所示;但是,我似乎无法修改这个值。我尝试了几种方法(代码如下所示),但似乎没有任何效果。
非常感谢任何帮助或指导!
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.y, transform.localScale.z); //this doesn't work
xScale = *any number* //this doesn't work
}
Run Code Online (Sandbox Code Playgroud)
der*_*ugo 11
这里的问题似乎更多的是对 C# 一般工作方式的误解!
这
xScale = 3f;
Run Code Online (Sandbox Code Playgroud)
为该字段分配一个新值xScale。无论它以前有什么价值,现在都被遗忘了,而且3f现在也被遗忘了。与
rectScale = new Vector3(3f, transform.localScale.y, transform.localScale.z);
Run Code Online (Sandbox Code Playgroud)
为该字段分配一个新值rectScale。无论它以前拥有什么向量值,它都会被忘记,现在它具有该值(3f, transform.localScale.y, transform.localScale.z)
rectTransform.localScale两者都不会改变or的值rectTransform.localScale.x!
您宁愿为rectTransform.localScalelike 分配一个新值,例如
recTransform.localScale = new Vevtor3 (3f, rectTransform.localScale.y, rectTransform.localScale.z);
Run Code Online (Sandbox Code Playgroud)
或者更高效,无需多次访问同一属性
var scale = rectTransform.localScale;
scale.x = 3f;
recTransform.localScale = scale;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,专门针对RectTransform您可能更想使用sizeDelta实际缩放比例的rect. 使用localScale会导致内容和任何孩子看起来很拉长!
var scale = rectTransform.sizeDelta:
scale.x = 3f;
recTransform.sizeDelta = scale;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7750 次 |
| 最近记录: |