图片按钮的两态变化鼠标左键按下down和弹起up所触发的事件
编写两个脚本文件
一个是点击按钮的图片变化(UI代码)
1 using UnityEngine; 2 using System.Collections; 3 4 public class MyUIButton : MonoBehaviour 5 { 6 public Texture2D[] btn; 7 public string doUpMethodName; 8 public string doDownMethodName; 9 Rect rc; 10 int index = 0; 11 12 void Update() 13 { 14 if(Input.GetMouseButtonUp(0)) 15 { 16 rc = guiTexture.pixelInset; 17 rc.x += transform.position.x * Screen.width; 18 rc.y += transform.position.y * Screen.height; 19 if(rc.Contains(Input.mousePosition)) 20 { 21 index = 1; 22 SendMessage(doUpMethodName,index);//按钮弹起时的事件触发 23 } 24 } 25 26 if(Input.GetMouseButtonDown(0)) 27 { 28 rc = guiTexture.pixelInset; 29 rc.x += transform.position.x * Screen.width; 30 rc.y += transform.position.y * Screen.height; 31 if(rc.Contains(Input.mousePosition)) 32 { 33 index = 0; 34 SendMessage(doDownMethodName);//按钮按下时的事件触发 35 } 36 } 37 guiTexture.texture = btn[index]; 38 } 39 }
一个是点击按钮触发的事件(逻辑代码)
1 using UnityEngine; 2 using System.Collections; 3 4 public class DoAction : MonoBehaviour 5 { 6 void DoDownMethodName() 7 { 8 Debug.Log("down.down"); 9 } 10 11 void DoUpMethodName() 12 { 13 Debug.Log("up.up"); 14 } 15 16 }
将这两个脚本都绑定到一个GameObject上,并附加相应的变量属性值,如图
PS:1. DoAction这个接收Message的脚本类,必须继承MonoBehaviour,否则会报出没有逻辑处理的那个方法名
2. 图片不能用Transform.Scale缩放,要缩放的话就直接更改图片的width和height
3. 脚本中不能出现中文注释,会出现脚本的解析错误,终端报出"CS8025 Parsing error",为了解决这个error,查遍Unity3d的官方论坛后仍没有结果(国内的基本没有关于Unity3d的好论坛,你懂的),思来想去这个问题不应该不会在论坛没有啊,于是乎开始了第N次的查看所写的代码确定无误后,不知怎么地想到了本地化问题,抱着试试看的心理把中文注释删掉,结果error没有了。为这个所谓的操蛋的error花费了近1个小时的时间!(我用的是Unity3.4,其他版本未知)