// 加载窗口控件资源,窗口资源都是从文件加载 public void loadWidgetRes(UIFormID ID) { UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID]; if (!m_ID2WidgetLoadingItemDic.ContainsKey(ID)) // 如果什么都没有创建,第一次加载 { m_ID2WidgetLoadingItemDic[ID] = new UILoadingItem(); m_ID2WidgetLoadingItemDic[ID].m_ID = ID; loadFromFile(attrItem.m_widgetPath, onWidgetLoadEventHandle); } }
// 这个事加载界面需要的代码 //public void loadForm<T>(UIFormID ID) where T : Form, new() public void loadForm(UIFormID ID) { UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID]; Form window = getForm(ID); if (window != null) // 本地已经创建了这个窗口, { if (window.IsResReady) // 如果资源也已经加载进来了 { if (null != Ctx.m_instance.m_cbUIEvent) { Ctx.m_instance.m_cbUIEvent.onCodeFormLoaded(window); // 资源加载完成 } } } else if (!m_ID2CodeLoadingItemDic.ContainsKey(ID)) // 如果什么都没有创建,第一次加载 { // 创建窗口 Form form = null; if (attrItem.m_bNeedLua) { form = new Form(); } else { form = Ctx.m_instance.m_scriptDynLoad.getScriptObject(attrItem.m_scriptTypeName) as Form; } if (form != null) // 如果代码已经在本地 { (form as Form).id = ID; if (attrItem.m_bNeedLua) { form.luaCSBridgeForm = new LuaCSBridgeForm(attrItem.m_luaScriptTableName, form); form.luaCSBridgeForm.DoFile(attrItem.m_luaScriptPath); } addFormNoReady(form); // 仅仅是创建数据,资源还没有加载完成 onCodeLoadedByForm(form); } // 这个地方应该抛出异常 if (null == form) // 本地没有代码 { m_ID2CodeLoadingItemDic[ID] = new UILoadingItem(); m_ID2CodeLoadingItemDic[ID].m_ID = ID; loadFromFile(attrItem.m_codePath, onCodeLoadEventHandle); } } }
// 这个事加载界面需要的代码 //public void loadForm<T>(UIFormID ID) where T : Form, new() public void loadForm(UIFormID ID) { UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID]; Form window = getForm(ID); if (window != null) // 本地已经创建了这个窗口, { if (window.IsResReady) // 如果资源也已经加载进来了 { if(null != Ctx.m_instance.m_cbUIEvent) { Ctx.m_instance.m_cbUIEvent.onCodeFormLoaded(window); // 资源加载完成 } } } else if (!m_ID2CodeLoadingItemDic.ContainsKey(ID)) // 如果什么都没有创建,第一次加载 { // 创建窗口 Form form = null; if (attrItem.m_bNeedLua) { form = new Form(); } else { form = Ctx.m_instance.m_scriptDynLoad.getScriptObject(attrItem.m_scriptTypeName) as Form; } if (form != null) // 如果代码已经在本地 { (form as Form).id = ID; if (attrItem.m_bNeedLua) { form.luaCSBridgeForm = new LuaCSBridgeForm(attrItem.m_luaScriptTableName, form); form.luaCSBridgeForm.DoFile(attrItem.m_luaScriptPath); } addFormNoReady(form); // 仅仅是创建数据,资源还没有加载完成 onCodeLoadedByForm(form); } // 这个地方应该抛出异常 if(null == form) // 本地没有代码 { m_ID2CodeLoadingItemDic[ID] = new UILoadingItem(); m_ID2CodeLoadingItemDic[ID].m_ID = ID; loadFromFile(attrItem.m_codePath, onCodeLoadEventHandle); } } }