源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

148 行
4.3 KiB

ChangeSceneMovie = ChangeSceneMovie or BaseClass()
local ChangeSceneMovie = ChangeSceneMovie
local Time = Time
function ChangeSceneMovie:__init()
self.enabled = false
self.show_type = 1
ChangeSceneMovie.Instance = self
end
function ChangeSceneMovie:getInstance()
if not ChangeSceneMovie.Instance then
ChangeSceneMovie.New()
end
return ChangeSceneMovie.Instance
end
function ChangeSceneMovie:InitRenderTexture( )
if not self.rect then
self.rect = UnityEngine.Rect.New(0,0,ScreenWidth * 0.8,ScreenHeight * 0.8)
end
if not self.renderTexture then
self.renderTexture = UnityEngine.RenderTexture.GetTemporary(self.rect.width,self.rect.height,0)
end
if not self.gameObject then
self.gameObject = GameObject.New("ChangeSceneMovie")
end
self.parent = panelMgr:GetParent("Top")
self.gameObject.transform:SetParent(self.parent)
if not self.rawImage then
self.rawImage = self.gameObject:AddComponent(typeof(UnityEngine.UI.RawImage))
end
self.rawImage.texture = self.renderTexture
self.transform = self.gameObject.transform
-- self.transform:SetAsFirstSibling()
self.transform.anchorMin = Vector2(0,0)
self.transform.anchorMax = Vector2(1,1)
self.transform.localPosition = Vector3(0,0,-48000)
self.transform.sizeDelta = Vector2(0,0)
self.transform.localScale = Vector3(1,1,1)
self.rawImage.raycastTarget = false
self.gameObject:SetActive(false)
end
function ChangeSceneMovie:TryOpen(show_type, ignore_fire_event)
-- self:InitRenderTexture()
-- if self.enabled then return end
self.enabled = true
self.has_fire_event = false
if ignore_fire_event then --单纯的展示,不需要派发切换场景完成事件
self.has_fire_event = true
end
MainCamera.Instance:ShowEnterSceneEffect()
-- local function on_load_finish( )
-- if not self.has_fire_event then
-- EventSystem.Fire(GlobalEventSystem,EventName.SCENE_LOAD_VIEW_COMPLETE, true)
-- self.has_fire_event = true
-- end
-- end
-- if self.load_scene_finish_id then
-- GlobalEventSystem:UnBind(self.load_scene_finish_id)
-- self.load_scene_finish_id = nil
-- end
-- self.load_scene_finish_id = GlobalEventSystem:Bind(EventName.NPC_LOAD_FINISH, on_load_finish)
-- setTimeout(on_delay, 1)
-- on_delay()
local function on_close( )
self:TryClose()
end
setTimeout(on_close, 2.5)
--[[
self.show_type = 1
local mainCam = MainCamera.Instance
-- mainCam.camera.targetTexture = self.renderTexture
-- mainCam.camera:Render()
-- mainCam.camera.targetTexture = nil
self.gameObject:SetActive(true)
if self.timer_id then
GlobalTimerQuest:CancelQuest(self.timer_id)
self.timer_id = false
end
if self.delay_show_type2_id then
GlobalTimerQuest:CancelQuest(self.delay_show_type2_id)
self.delay_show_type2_id = false
end
local function onComplete1()
if self.curr_value < 0.9 then
self.curr_value = self.curr_value + 0.015 * Time.deltaTime / 0.02
ShaderTools.dissolve_mat:SetFloat("_DissolveThreshold", self.curr_value)
if self.curr_value > 0.7 then
if not self.has_fire_event then
EventSystem.Fire(GlobalEventSystem,EventName.SCENE_LOAD_VIEW_COMPLETE, true)
self.has_fire_event = true
end
end
else
if self.timer_id then
GlobalTimerQuest:CancelQuest(self.timer_id)
self.timer_id = false
end
self:TryClose()
end
end
self.curr_value = 0.3
if ShaderTools.dissolve_mat then
self.rawImage.material = ShaderTools.dissolve_mat
ShaderTools.dissolve_mat:SetFloat("_DissolveThreshold", self.curr_value)
self.timer_id = GlobalTimerQuest:AddPeriodQuest(onComplete1, 0.03, -1)
-- setTimeout(show_effect,0.5)
end
]]
end
function ChangeSceneMovie:TryClose()
if self.renderTexture then
UnityEngine.RenderTexture.ReleaseTemporary(self.renderTexture)
self.renderTexture = nil
end
self.enabled = false
if not IsNull(self.gameObject) then
self.gameObject:SetActive(false)
end
if self.timer_id then
GlobalTimerQuest:CancelQuest(self.timer_id)
self.timer_id = false
end
if self.delay_show_type2_id then
GlobalTimerQuest:CancelQuest(self.delay_show_type2_id)
self.delay_show_type2_id = false
end
if not self.has_fire_event then
EventSystem.Fire(GlobalEventSystem,EventName.NOTICE_SCENE_LOAD_WILL_COMPLETE, true)
self.has_fire_event = true
end
if self.load_scene_finish_id then
GlobalEventSystem:UnBind(self.load_scene_finish_id)
self.load_scene_finish_id = nil
end
end