当前位置:   article > 正文

在Unity中的image实现透明度渐变_unity改变image透明度

unity改变image透明度

目录

1.实现从有颜色到完全透明

2.实现从透明到有色


1.实现从有颜色到完全透明

首先添加组件Canvas Group:

 其中Alpha=0表示为透明,1则表示为有色。

脚本实现:

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. public class ToolTilePanel : MonoBehaviour
  5. {
  6. private float alpha = 0.0f;
  7. //这里可以自己调整,按照你的需求来
  8. private float alphaSpeed = 0.8f;
  9. private CanvasGroup cg;
  10. void Start()
  11. {
  12. cg = this.transform.GetComponent<CanvasGroup>();
  13. }
  14. void Update()
  15. {
  16. if (alpha != cg.alpha)
  17. {
  18. cg.alpha = Mathf.Lerp(cg.alpha, alpha, alphaSpeed * Time.deltaTime);
  19. if (Mathf.Abs(alpha - cg.alpha) <= 0.01)
  20. {
  21. cg.alpha = alpha;
  22. }
  23. }
  24. }
  25. public void Show()
  26. {
  27. alpha = 1;
  28. cg.blocksRaycasts = true;//可以和该UI对象交互
  29. }
  30. public void Hide()
  31. {
  32. alpha = 0;
  33. cg.blocksRaycasts = false;//不可以和该UI对象交互
  34. }
  35. }

2.实现从透明到有色

添加组件与先前一致,此处略。

添加脚本:

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. public class ToolT2 : MonoBehaviour
  5. {
  6. private float alpha = 1.0f;
  7. private float alphaSpeed = 0.5f;
  8. private CanvasGroup cg;
  9. void Start()
  10. {
  11. cg = this.transform.GetComponent<CanvasGroup>();
  12. }
  13. void Update()
  14. {
  15. if (alpha != cg.alpha)
  16. {
  17. cg.alpha = Mathf.Lerp(cg.alpha, alpha, alphaSpeed * Time.deltaTime);
  18. if (Mathf.Abs(alpha + cg.alpha) >= 0.01)
  19. {
  20. cg.alpha = alpha;
  21. }
  22. }
  23. }
  24. public void Show()
  25. {
  26. alpha = 0;
  27. cg.blocksRaycasts = true;//可以和该UI对象交互
  28. }
  29. public void Hide()
  30. {
  31. alpha = 1;
  32. cg.blocksRaycasts = false;//不可以和该UI对象交互
  33. }
  34. }

最后把它们都挂载在image(其它的一些东西也可以实现)上面,然后运行就可以得到渐变效果了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/116345
推荐阅读
相关标签
  

闽ICP备14008679号