local UIViewUIModels = UIViewClass() local Common2DScenePrefab = ConstAssetPathConfig.Common2DScenePrefab local bgTexturePath = ConstAssetPathConfig.bgTexturePath local Category = { [1] = "英雄", [2] = "灵宠", [3] = "坐骑", [4] = "宝物", [5] = "神兽", } local EnumCategory = { Hero = 1, Pet = 2, Horse = 3, Treasure = 4, GodBeast = 5 } function UIViewUIModels:OnOpened(context) UIUtils.SetLabel(self.UITemplateTitlePanel.lab_Title, "UI界面模型展示") self.modelComponentDataHandle = UTL.UIRender.CreateModelComponentDatas(self.model_Show) self:RegistTriggerEvent(self.model_Show, UIEventTriggerType.Drag) UTL.UIRender.Create2DSceneTrans(self.modelComponentDataHandle, Common2DScenePrefab, 1600, 0, 1600, bgTexturePath, false) self:InitData() self.curTab1 = 1 self.curTab2 = 1 self.scroll_Tab1:ReloadAll(Category) end function UIViewUIModels:InitData() --英雄 self.heroDataMap = {} self.heroDataList = {} for i, v in DataSheetManager.HeroNum:GetEnumerator() do self.heroDataMap[v.ID] = {[1] = { heroID = v.ID, name = "原皮", modelID = v.PreviewModel, modelLight = v.PreviewModelLight }} table.insert(self.heroDataList, v.ID) end for i, v in DataSheetManager.HeroAppearance:GetEnumerator() do table.insert(self.heroDataMap[v.HeroID], { heroID = v.HeroID, name = UIUtils.GetLocalizedTxt(Const_IDS[v.AppearanceName]), modelID = v.PreviewModel, modelLight = v.PreviewModelLight }) end --宠物 self.petDataList = {} for i, v in DataSheetManager.PetData:GetEnumerator() do table.insert(self.petDataList, v) end --宝物 self.treasureDataList = {} for i, v in DataSheetManager.TreasureData:GetEnumerator() do table.insert(self.treasureDataList, v) end --神兽 self.godBeastDataList = {} for i, v in DataSheetManager.GodBeastData:GetEnumerator() do table.insert(self.godBeastDataList, v) end --坐骑 self.horseDataList = {} for i, v in DataSheetManager.HorseData:GetEnumerator() do table.insert(self.horseDataList, v) end for i, v in DataSheetManager.HorseAppearance:GetEnumerator() do table.insert(self.horseDataList, v) end --神兵 self.WeaponDataList = {} for i, v in DataSheetManager.HorseData:GetEnumerator() do table.insert(self.horseDataList, v) end for i, v in DataSheetManager.HorseAppearance:GetEnumerator() do table.insert(self.horseDataList, v) end end function UIViewUIModels:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.scroll_Tab1 then UIUtils.SetLabel(cellTable.txt_Name, data) elseif scrollRect == self.scroll_Tab2 then --显示列表名字 if self.curTab1 == EnumCategory.Hero then local heroData = DataSheetManager.HeroNum:GetDataByID(data) UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[heroData.NameIDS]) elseif self.curTab1 == EnumCategory.Pet then UIUtils.SetLabel(cellTable.txt_Name, UIUtils.GetLocalizedTxt(Const_IDS[data.PetName]) .. "_" .. data.Stage) elseif self.curTab1 == EnumCategory.Horse then if data.HorseName then UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[data.HorseName]) else UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[data.Name]) end elseif self.curTab1 == EnumCategory.Treasure then UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[data.TreasureName]) elseif self.curTab1 == EnumCategory.GodBeast then UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[data.GodBeastName]) end elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) end end function UIViewUIModels:OnCellClicked(scrollRect, index, cellTable, target, data) index = index + 1 if scrollRect == self.scroll_Tab1 then self.curTab1 = index UIUtils.SetActive(self.scroll_Tab3.gameObject, false) --加载名字列表 if index == EnumCategory.Hero then self.scroll_Tab2:ReloadAll(self.heroDataList) self.scroll_Tab2:SelectIndex(0) UIUtils.SetActive(self.scroll_Tab3.gameObject, true) elseif index == EnumCategory.Pet then self.scroll_Tab2:ReloadAll(self.petDataList) elseif index == EnumCategory.Horse then self.scroll_Tab2:ReloadAll(self.horseDataList) elseif index == EnumCategory.Treasure then self.scroll_Tab2:ReloadAll(self.treasureDataList) elseif index == EnumCategory.GodBeast then self.scroll_Tab2:ReloadAll(self.godBeastDataList) end elseif scrollRect == self.scroll_Tab2 then self.curTab2 = index if self.curTab1 == EnumCategory.Hero then self.scroll_Tab3:ReloadAll(self.heroDataMap[self.heroDataList[index]]) elseif self.curTab1 == EnumCategory.Weapon then --self.scroll_Tab3:ReloadAll(self.heroDataMap[self.heroDataList[index]]) elseif self.curTab1 == EnumCategory.Pet then UTL.UIRender.LoadDevelop3DModel(self.modelComponentDataHandle, CTL.Pet.GetDevelopModelParam(data)) UTL.UIRender.SetHeroParentPos(self.modelComponentDataHandle, 0.8, 0, 0) UTL.UIRender.SetHeroParentRot(self.modelComponentDataHandle, 0, -10, 0) UTL.UIRender.SetModelRootLocalScale(self.modelComponentDataHandle, 1, 1, 1) elseif self.curTab1 == EnumCategory.Horse then local horseModelData = DataSheetManager.HorseModelData:GetDataByHorseModelID(data.HorseModelID) local modelPath = string.isNilOrEmpty(horseModelData.HorseModelHigh) and horseModelData.HorseModel or horseModelData.HorseModelHigh UTL.UIRender.LoadDevelop3DModel(self.modelComponentDataHandle, modelPath, data.HorsePreviewModelLight, {0,0,0}, 1) UTL.UIRender.SetHeroParentPos(self.modelComponentDataHandle, 0.16, -1.1, 0) UTL.UIRender.SetHeroParentRot(self.modelComponentDataHandle, 0, 60, 0) UTL.UIRender.SetModelRootLocalScale(self.modelComponentDataHandle, data.ModelScale, data.ModelScale, data.ModelScale) elseif self.curTab1 == EnumCategory.Treasure then UTL.UIRender.LoadDevelop3DModel(self.modelComponentDataHandle, data.TreasureMode, data.TreasurePreviewModelLight, {0,0,0}, 1, nil, nil, data.TreasureShowEffect, data.TreasureAnim) UTL.UIRender.SetHeroParentPos(self.modelComponentDataHandle, 0.16, -0.5, 0) UTL.UIRender.SetHeroParentRot(self.modelComponentDataHandle, 0, -10, 0) UTL.UIRender.SetModelRootLocalScale(self.modelComponentDataHandle, 1, 1, 1) elseif self.curTab1 == EnumCategory.GodBeast then local path, previewModelLight, xyz, scale, rot, groundScale, showEffect, anim = CTL.GodBeast.GetDevelopModelData(data.ID) UTL.UIRender.LoadDevelop3DModel(self.modelComponentDataHandle, path, previewModelLight, xyz, scale, rot, nil, showEffect, anim) UTL.UIRender.SetHeroParentPos(self.modelComponentDataHandle, -0.3, -0.5, 0) --UTL.UIRender.SetHeroParentRot(self.modelComponentDataHandle, 0, -10, 0) UTL.UIRender.SetModelRootLocalScale(self.modelComponentDataHandle, 1, 1, 1) end elseif scrollRect == self.scroll_Tab3 then if self.curTab1 == EnumCategory.Hero then UTL.UIRender.DisposePlayerModel(self.modelComponentDataHandle) local modelData = DataSheetManager.MonsterModelData:GetDataByID(data.modelID) UTL.UIRender.CreatePlayerModel(self.modelComponentDataHandle, data.heroID, modelData.Path, data.modelLight, true, nil, data.heroID) UTL.UIRender.SetHeroParentPos(self.modelComponentDataHandle, 0.16, -1.2, 0) UTL.UIRender.SetHeroParentRot(self.modelComponentDataHandle, 0, -10, 0) UTL.UIRender.SetModelRootLocalScale(self.modelComponentDataHandle, 1, 1, 1) elseif self.curTab1 == EnumCategory.Weapon then --UTL.UIRender.CreateMagicWeapon3DModel(self.modelComponentDataHandle, weaponModelData.ID, effectLevel, bgPath) end end end function UIViewUIModels:OnButtonClicked(comp) if comp == self.UITemplateTitlePanel.btn_close then self:CloseView(true) elseif comp == self.UITemplateTitlePanel.btn_Home then self:CloseView(true) end end function UIViewUIModels:OnDrag(comp, eventData) UTL.UIRender.RotateEntity(self.modelComponentDataHandle, -eventData.delta.x * 0.2, true, false) end function UIViewUIModels:OnClosed() UTL.UIRender.DisposeModelComponentData(self.modelComponentDataHandle) end return UIViewUIModels