我正在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
反之亦然