U3D背包

这个背包实现的是点击背包中的按钮,弹出另一个框。
代码如下:
public class BeiBao : MonoBehaviour {
   
    private Rect daohang=new Rect(0,0,400,60);
    private Rect shopRect=new Rect(50,50,500,400);
    private Rect bagRect=new Rect(70,50,500,400);
    private delegate void Fun();
    private Fun shopFun;
    private Fun bagFun;
    private ArrayList arr;
   
    // Use this for initialization
    void Start () {
        arr=new ArrayList();
        //Console.WriteLine("Delegate an other class's method");
    }
   
    // Update is called once per frame
    void Update () {
   
    }
   
    void OnGUI(){
        daohang=GUI.Window(0,daohang,dragDaoHang,"DaoHang");
        foreach(Fun fun in arr){
            fun();
        }
    }
    void dragDaoHang(int windowID){

        GUILayout.BeginHorizontal(GUILayout.Width(400),GUILayout.Height(60));
        if(GUILayout.Button("shop")&&shopFun==null){
            Fun fun = (Fun)shop;
            arr.Add(fun);
            shopFun=fun;
        }
        
        
        if(GUILayout.Button("bag")&&bagFun==null){
            Fun fun = (Fun)bag;
            arr.Add(fun);
            bagFun=fun;
        }

        GUILayout.EndHorizontal();
        
        GUI.DragWindow(new Rect(0,0,1024,1024));
    }
    void shop(){
        shopRect=GUI.Window(1,shopRect,dragShop,"Market");
    }
    void bag(){
        bagRect=GUI.Window(2,bagRect,dragbag,"bag");
    }

    void dragShop(int windowID){
        if(GUI.Button(new Rect(460,0,40,40),"X")){
            arr.RemoveAt(arr.IndexOf(shopFun));
            shopFun=null;
        }
        GUI.DragWindow(new Rect(0,0,1024,1024));
    }
    void dragbag(int windowID){
        if(GUI.Button(new Rect(460,0,40,40),"X")){
            arr.RemoveAt(arr.IndexOf(bagFun));
            bagFun=null;
        }
        GUI.DragWindow(new Rect(0,0,1024,1024));
      }      
}
    1.jpg

u3d
这里面用到了委托,不是很明白委托的意思。
我的理解是用委托来代替一个方法,声明一个数组,将要实现的功能的在这里是shopFun添加到数组中,这个功能就实现了。例如,点击X页面关闭,如果从数组中删除,那么关闭的功能就实现了。
这个委托我也说不怎么清楚,只是我自己的一些模糊理解,哪边不正确还请各位提出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值