Unity3d中点击按钮图片的响应

图片按钮的两态变化鼠标左键按下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,其他版本未知)

posted @ 2012-06-06 16:23  Marble  阅读(17081)  评论(0编辑  收藏  举报