我正在尝试仅在滑块的右侧拉伸它。我将脚本及其“填充区域”附加到脚本。我尝试更改sizeDelta,但它同时适用于两种方式...
public Slider healthSlider;
public GameObject healthRect;
void Update () {
healthRect.GetComponent<RectTransform> ().sizeDelta += Vector2.right * Time.deltaTime;
}
滑动条的锚点设置为左上角,“填充区域”的锚点设置为上拉伸
在此先感谢大家。
最佳答案
尝试使用RectTransform
的SetInsetAndSizeFromParentEdge
方法。您的代码可能如下所示:
public Slider healthSlider;
public GameObject healthRect;
private float sliderSize = 100;
void Update ()
{
healthRect.GetComponent<RectTransform> ().SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, sliderSize);
sliderSize += Time.deltaTime;
}
这将使滑块保持在左侧,同时将其“缩放”到右侧。第二个参数使您可以定位滑块左侧应相对于其父级的位置。
注意:在更新函数中调用
GetComponent
效率很低,您应该在RectTransform
处缓存对Start
的引用,然后像这样使用它:public Slider healthSlider;
public GameObject healthRect;
private float sliderSize = 100;
private RectTransform healthRectTransform;
void Start()
{
healthRectTransform = healthRect.GetComponent<RectTransform>();
}
void Update ()
{
healthRectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, sliderSize);
sliderSize += Time.deltaTime;
}
这样做意味着您只需要在
GetComponent
函数中调用一次Start
一次,效率就高得多。注意注意:如果仅在检查器中分配
healthRect
游戏对象并仅使用它来获取它的RectTransform
组件,则可以删除此变量,而在检查器中仅分配healthRectTransform
字段,并跳过其中的部分。 Start
方法。关于c# - 仅通过正确的C#Unity更改Slider的宽度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37196770/