动画缩放按钮精灵C#Unity



我正在Unity中开发一个VR-UI,我想在凝视/看着它的时候缩放按钮的精灵。现在代码是这样的。

private void HandleOver()
{
isOver = true;
StartCoroutine(WaitAndClick());
//m_Image.color = Color.cyan;
m_Image.rectTransform.sizeDelta += new Vector2(10, 10);
}
private void HandleOut()
{
isOver = false;
//m_Image.color = Color.white;
m_Image.rectTransform.sizeDelta = m_Image.rectTransform.sizeDelta - new Vector2(10, 10);
}

这基本上是两个用于进入和离开对象的空隙。现在它工作得很好,但我希望它能动画化。有了这个代码,它就是规模的即时变化。此外,我是否可以仅访问m_Image的精灵,以便不更改子对象?

如果有任何帮助,我将不胜感激。提前感谢!

您可以创建一个Coroutine来动画按钮大小,如

IEnumerator MakeBig()
{
var targetSize = m_Image.rectTransform.sizeDelta + new Vector2(10, 10);
while (m_Image.rectTransform.sizeDelta != targetSize) {
m_Image.rectTransform.sizeDelta += new Vector2(1, 1);
yield return new WaitForSeconds(0.1f);
}
}

然后在HandleOver中,您像这样启动

makeHuge = StartCoroutine (MakeBig());

我们需要在某个地方存储对Coroutine的引用,这样我们就可以尝试停止它,以防在MakeBig完成之前触发HandleOut

所以在HandleOut中,您可以执行类似的操作

StopCoroutine(makeHuge);

然后对于HandleOver反之亦然

最新更新