GuideSpiritItem = GuideSpiritItem or BaseClass(BaseItem) function GuideSpiritItem:__init() self.base_file = "guide" self.layout_file = "GuideSpiritItem" self.layer_name = "Main" self.destroy_imm = true self.use_background = true -- self.use_local_view = true self:Load() end function GuideSpiritItem:Load_callback() self.ModelBtn = GetChildGameObjects (self.transform, { "ModelBtn" }) self.con,self.SpiritCon = GetChildTransforms(self.transform, { "Con","SpiritCon", }) self:InitEvent() local function load_callback() self:SetSpiritModel() end local data = { clothe_res_id = GuideModel.SpiritBgId, type = SceneBaseType.StarSoul, layer_name = self.layer_name, rotate = Vector3(-15,0,0), action_name_list = {"idle"}, can_rotate = false, scale = 50, position = Vector3(0, 12, 0), callBack = load_callback, layout_file = self.layout_file } lua_resM:SetRoleModel(self, self.con,data) end function GuideSpiritItem:SetSpiritModel() local function load_callback() if self.curr_Model == nil then self.curr_Model = lua_resM:GetPartModel(self, self.con) end if self.curr_Model then self.spirit_root = self.curr_Model.transform:Find("Bone001") if self.spirit_root then local function load_finish(go) if go then self:SetUILayer(go.transform) go.transform.localPosition = Vector3(0,0,0) go.transform.localScale = Vector3.one go.transform.localRotation = Quaternion.Euler(Vector3.zero) end end local function load_finish_func(go) if go then self.BGEffect = go.transform self:SetUILayer(go.transform) go.transform.localPosition = Vector3(0,0,0) go.transform.localScale = Vector3.one go.transform.localRotation = Quaternion.Euler(Vector3.zero) end end self:AddUIEffect("501001_bone001fx",self.spirit_root.transform,self.layer_name, nil, -1, false, -1, nil, nil, load_finish, nil, nil, true) self:AddUIEffect("ui_partnershow",self.curr_Model.transform,self.layer_name, nil, -1, false, -1, nil, nil, load_finish_func, nil, nil, true) self.SpiritCon:SetParent(self.spirit_root.transform) end end end local data = { clothe_res_id = GuideModel.SpiritId, type = SceneBaseType.StarSoul, layer_name = self.layer_name, rotate = Vector3(0,180,0), action_name_list = {"idle2"}, can_rotate = false, scale = 1, position = Vector3(2.1, -144.2, 0), callBack = load_callback, layout_file = self.layout_file } lua_resM:SetRoleModel(self,self.SpiritCon.transform,data) end function GuideSpiritItem:InitEvent() local function clickFunc(target) if target == self.ModelBtn then GlobalEventSystem:Fire(EventName.OPEN_GUIDE_SPIRIT_VIEW) end end AddClickEvent(self.ModelBtn,clickFunc) local function onChangeMainCanvasVisible(ref,visible) if visible then local spirt_model = lua_resM:GetPartModel(self, self.SpiritCon) if spirt_model and spirt_model.gameObject then local animator = spirt_model.gameObject:GetComponent("Animator") if animator then if not self.timer_out then local onDelay = function( ) if self.timer_out then GlobalTimerQuest:CancelQuest(self.timer_out) self.timer_out = nil end if animator then animator:Update(0) animator:CrossFade("idle2",0.1, 0) end end self.timer_out = setTimeout(onDelay, 0.1) end end end end end self.change_canvas_id = LuaViewManager:getInstance():Bind(LuaViewManager.CHANGE_MAIN_CANVAS_VISIBLE,onChangeMainCanvasVisible) end function GuideSpiritItem:__delete() if self.timer_out then TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_out) self.timer_out = false end if self.event_id then self.model:UnBind(self.event_id) end if self.change_canvas_id then LuaViewManager:getInstance():UnBind(self.change_canvas_id) self.change_canvas_id = nil end end