【转】UGUI之用脚本动态的改变Button的背景图片 和 颜色

时间:2023-03-08 23:09:16
【转】UGUI之用脚本动态的改变Button的背景图片 和 颜色

http://blog.csdn.net/u014771617/article/details/45102701

public Button button;
void Start()
{
ColorBlock cb = new ColorBlock();
cb.normalColor = Color.red;
cb.highlightedColor = Color.green;
cb.pressedColor = Color.blue;
cb.disabledColor = Color.black;
button.colors = cb
}
要改颜色得这样写

当我们在制作一些特殊的面板时,有时会通过一个按钮来控制面板的显示与隐藏,同时又要按钮的背景图片能够表明当前面板的显示状态时,这就涉及到动态的改变Button的背景图片了。

先呈上demo图片:

面板隐藏时的图片,其中的紫色区域即为一个面板,露出一部分是为了提示玩家,而红色三角形即为按钮背景,三角形朝下,表示面板隐藏

【转】UGUI之用脚本动态的改变Button的背景图片 和 颜色

面板显示时的图片,紫色区域即为面板部分,三角形朝上,表示面板显示

【转】UGUI之用脚本动态的改变Button的背景图片 和 颜色

这是怎么做到的呢?请看下面的代码:

代码一:

  1. <span style="font-size:14px;">using UnityEngine;
  2. using System.Collections;
  3. public class Status : MonoBehaviour {
  4. public static bool hide = true;
  5. }</span>

代码二:

  1. <span style="font-size:14px;">using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4. public class DanjiButtonCallback : MonoBehaviour
  5. {
  6. public void Up2Down()
  7. {
  8. GameObject trans = GameObject.Find("ButtonPanels");
  9. GameObject obj = GameObject.Find("Up2down");
  10. Button mbtn = obj.GetComponent<Button>();
  11. if (Status.hide)
  12. {
  13. Status.hide = false;
  14. mbtn.image.sprite = Resources.Load<Sprite>("2DSprites/buttoncontrol1");
  15. trans.transform.position -= new Vector3(0, 40,0);
  16. }else
  17. {
  18. Status.hide = true;
  19. mbtn.image.sprite = Resources.Load<Sprite>("2DSprites/buttoncontrol2");
  20. trans.transform.position += new Vector3(0, 40, 0);
  21. }
  22. }
  23. }</span>

代码一是用于存储游戏状态的类Status,其中的静态变量hide用于表示面板的隐藏与否,代码二中的“ButtonPanels”表示面板对象,“2DSprites/buttoncontrol1"和”2DSprite/buttoncontrol2"表示两种状态下的Button背景图片,“Up2down"表示控制面板的按钮,函数Up2Down为按钮Up2down的回调函数