我正在尝试仅在其右侧拉伸滑块。我附加了Slider及其“填充区”的脚本。我尝试改变sizeDelta,但它延伸到两个方向......
public Slider healthSlider;
public GameObject healthRect;
void Update () {
healthRect.GetComponent<RectTransform> ().sizeDelta += Vector2.right * Time.deltaTime;
}
锚点设置在左上方用于滑块和顶部拉伸用于“填充区域” 先谢谢你们。
答案 0 :(得分:1)
尝试并使用RectTransform
&#39; 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;
}
这将使滑块保持在左侧,同时缩放&#39;它在右边。第二个参数可让您定位滑块左侧相对于其父级的位置。
注意:在更新函数中调用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
Gameobject并仅使用它来获取它的RectTransform
组件,那么您可以删除此变量并只分配{{检查器中的1}}字段,并跳过healthRectTransform
方法中的部分。