纳金网

标题: Unity 4.6后新版GUI——uGUI中控件事件的写法 [打印本页]

作者: 狂风大尉    时间: 2014-7-29 20:25
标题: Unity 4.6后新版GUI——uGUI中控件事件的写法
除了在属性面板中手动给Button等添加事件外,终于搞定了用代码添加事件的方法。主要是手动添加太不方便了,而且代码方扩展、维护。创建Canvas、Button什么的在面板里。。。主要贴代码

using UnityEngine;
using System.Collections;
using UnityEngine.Events;//引用事件命名空间
using UnityEngine.UI;//引用UI命名空间

public class Test : MonoBehaviour
{
        // Use this for initialization
        void Start ()
    {
        //定义Action,并赋予delegate方法
        UnityAction<Button> btnActions = new UnityAction<Button>(onClick);
        //找到Button控件,并订阅事件
        Button btn = gameObject.GetComponent<Button>();
        btn.onClick.AddListener(btnActions);
        }

    void onClick(Object obj)
    {
        Debug.Log("button===========");
        Debug.Log("button-----------" + obj.name);
    }
}

作者: ku    时间: 2014-7-29 20:33
现在不是4。5。2版本吗?
作者: hyui    时间: 2014-7-29 21:09
Good to know  before release !
作者: HIDEOKOJIMA    时间: 2014-7-29 22:44
Thanks for sharing !
作者: heise    时间: 2014-7-29 22:54
现在不是4。5。2版本吗
作者: Mr.Fair    时间: 2014-8-14 14:59
Learning .....
作者: ucgqqqqgoi    时间: 2014-8-14 15:52

作者: lys19870103    时间: 2014-8-24 12:17
using UnityEngine;
using System.Collections;
using UnityEngine.Events;//引用事件命名空间
亲,为什么我也这么写写,他却报错了
Assets/Scripts/Fighting/FightBtShout.cs(14,29): error CS1503: Argument `#1' cannot convert `UnityEngine.Events.UnityAction<UnityEngine.UI.Button>' expression to type `UnityEngine.Events.UnityAction'


using UnityEngine.UI;//引用UI命名空间

public class FightBtShout : MonoBehaviour {

        // Use this for initialization
        void Start ()  {
                //定义Action,并赋予delegate方法
                UnityAction<Button> btnActions = new UnityAction<Button>(OnClick);
                //找到Button控件,并订阅事件
                Button btn = gameObject.GetComponent<Button>();
                btn.onClick.AddListener(btnActions);
        }
       



        void OnClick(Object obj){

                Debug.Log ("an");
         switch (obj.name)
                {
                case "BtshootOne":
                        Debug.Log("按钮一");
                        break;
                case "BtshootTwo":
                        Debug.Log("按钮一");
                        break;
                default:
                        Debug.Log("没有");
                        break;
                                }
        }
作者: tianhett    时间: 2014-11-26 17:09
涨姿势了。。。。。。。。。
作者: oelongeo    时间: 2014-11-26 17:26
谢谢指导!  学习了
作者: zhangzhen551    时间: 2015-1-26 17:43
lys19870103 发表于 2014-8-24 12:17
using UnityEngine;
using System.Collections;
using UnityEngine.Events;//引用事件命名空间

刚刚我试过了 这个OnClick方法必须是无惨的才可以。
作者: soulhez    时间: 2015-1-26 18:10
涨姿势了。。。。。。。。。
作者: davidfoxhu    时间: 2015-2-2 17:44
谢谢指导!  学习了
作者: pz789as    时间: 2015-7-2 16:05
lys19870103 发表于 2014-8-24 12:17
using UnityEngine;
using System.Collections;
using UnityEngine.Events;//引用事件命名空间

我也是= =

作者: pz789as    时间: 2015-7-2 16:06
zhangzhen551 发表于 2015-1-26 17:43
刚刚我试过了 这个OnClick方法必须是无惨的才可以。

无参的还怎么玩啊?真是坑爹~
作者: pz789as    时间: 2015-7-2 16:07
楼主是4.6几的?我4.6.0f3貌似只能使用无参数类型,很郁闷~多个按钮就要弄多个回调,坑死人啊~




欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5