protected void OnGUI()
{
if (isInvGUIDirty)
{
// Update selection text
controllerInterface.inventoryText.CrossFadeAlpha(255f, 0, false);
controllerInterface.inventoryText.CrossFadeAlpha(0.1f, 2, false);
^此结果(当我移动滚轮时)在库存文本中变为全白,两秒后变为浅灰色。没有光滑的过渡,它仍然清晰可见。每次移动滚轮时都会重复此操作。
controllerInterface.inventoryText.CrossFadeAlpha(255f, 0, false);
controllerInterface.inventoryText.CrossFadeAlpha(0f, 2, false);
^此结果(当我移动滚轮时)在库存文本中变为全白,两秒钟后变为不可见。每次移动滚轮时都会重复此操作。显然0.1 alpha会产生差异o_O
controllerInterface.inventoryText.color = Color.white;
controllerInterface.inventoryText.CrossFadeAlpha(0.1f, 2, false);
^这会导致库存文本缓慢淡化为浅灰色,但滚轮上没有变化。
关于为什么CrossFadeAlpha()没有按预期工作的任何想法?
答案 0 :(得分:0)
抱歉,没有从这里获得电子邮件更新:/。所以我最终做的就是在最基本的层面上编写自己的协程,这似乎有用......出于某种原因。老实说,不知道为什么以前没有用。这可以在CanvasGroup上运行,也可以在单个项目上运行。
private void FadeInventoryGroup(float alpha, float delay)
{
if (fader != null)
StopCoroutine(fader);
fader = StartCoroutine(EFadeOutInventory(alpha, delay));
}
private IEnumerator EFadeOutInventory(float alpha, float delay)
{
yield return new WaitForSeconds(delay);
float progress = 1f - Mathf.Abs(inventoryGroup.alpha - alpha);
float start = inventoryGroup.alpha;
while (progress < 1f)
{
progress += Time.deltaTime;
inventoryGroup.alpha = Mathf.Lerp(start, alpha, progress);
yield return 0;
}
}