Exemple #1
0
    private Dictionary <string, LuaFunction> ctrlFuncDic = new Dictionary <string, LuaFunction>();  //缓存用到的方法,防止反复取用


    void Awake()
    {
        luaMgr.Init();
        luaMgr.Require(luaFile);

        luaClass = luaFile;
        if (luaClass.IndexOf("/") > 0)
        {
            luaClass = luaClass.Substring(luaClass.LastIndexOf("/") + 1);
        }

        object[] ret = luaMgr.CallFunction(luaClass + ".New");
        if (ret == null || ret.Length == 0)
        {
            return;
        }
        else
        {
            uiView = ret[0] as LuaTable;
        }

        if (uiView == null)
        {
            return;
        }

        var func = uiView.Get <LuaFunction>("GetCtrl");

        if (func != null)
        {
            ret = func.Call(uiView);
            if (ret != null && ret.Length > 0)
            {
                uiCtrl = ret[0] as LuaTable;
            }
        }


        uiView.Set("lb", this);
        foreach (var item in items)
        {
            Type t = GetUIType(item.type);
            if (t == null)
            {
                continue;
            }

            if (t == typeof(Image))
            {
                uiView.Set(item.name, UITool.CreateUIImage(item.obj));
            }
            else if (t == typeof(Text))
            {
                uiView.Set(item.name, UITool.CreateUIText(item.obj));
            }
            else if (t == typeof(RawImage))
            {
                uiView.Set(item.name, UITool.CreateUITexture(item.obj));
            }
            else if (t == typeof(Button))
            {
                uiView.Set(item.name, UITool.CreateUIButton(item.obj));
            }
            else if (t == typeof(UIEventListener))
            {
                uiView.Set(item.name, UITool.CreateUIEventListener(item.obj));
            }
            else if (t == typeof(InputField))
            {
                uiView.Set(item.name, UITool.CreateUIInput(item.obj));
            }
        }

        CtrlCallFunc("Awake", uiView);
    }