增加放技能时黑屏的淡入淡出

main
刘涛 2024-03-21 15:13:28 +08:00
parent 5a5f62b725
commit 4290c13547
5 changed files with 200 additions and 15 deletions

View File

@ -43,6 +43,7 @@ GameObject:
- component: {fileID: 4545607764943411821}
- component: {fileID: 2478625049683118878}
- component: {fileID: 5293667126421138522}
- component: {fileID: 802590050758105738}
m_Layer: 5
m_Name: Quad
m_TagString: Untagged
@ -115,3 +116,24 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!95 &802590050758105738
Animator:
serializedVersion: 5
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8159087196645660200}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: cef9c56ea31addb419aed0c1b1ab8ea8, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0

View File

@ -0,0 +1,130 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-4253679700580881043
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Out
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: d484b180cbcc55f4a8e0f807af905574, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-824468524836426644
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: None
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 0}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: anim_skill_screen_effect
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 1256104947834881782}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1107 &1256104947834881782
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 5194646091153703445}
m_Position: {x: 350, y: 90, z: 0}
- serializedVersion: 1
m_State: {fileID: -4253679700580881043}
m_Position: {x: 350, y: 170, z: 0}
- serializedVersion: 1
m_State: {fileID: -824468524836426644}
m_Position: {x: 350, y: 10, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -824468524836426644}
--- !u!1102 &5194646091153703445
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: In
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: aceba6ae8cd541d48aadd61490271ce7, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cef9c56ea31addb419aed0c1b1ab8ea8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -19,6 +19,11 @@ namespace Gameplay.Skill
private List<GameObject> _cacheObjs;
private List<int> _cacheLayers;
private Animator _rawAnim;
public Animator rawAnim => _rawAnim;
public bool isHide;
public async UniTask Init()
{
skillCamera = CmpObjRef.instance.m_SkillCamera;
@ -40,6 +45,8 @@ namespace Gameplay.Skill
skillBg = UIRoot.Instance.UICamera.transform.GetChild(0).gameObject;
}
skillBg.SetActive(false);
_rawAnim = skillBg.GetComponentInChildren<Animator>();
_rawAnim.Play("None");
}
public void Restore()
@ -51,6 +58,7 @@ namespace Gameplay.Skill
public void Show()
{
isHide = false;
skillBg.SetActive(true);
var mainCamera = Camera.main;
@ -69,10 +77,17 @@ namespace Gameplay.Skill
}
skillCamera.gameObject.SetActive(true);
_rawAnim.Play("In");
}
public void Hide()
public async void StartHide()
{
_rawAnim.Play("Out");
// 等待播放完成
await UniTask.Delay(250);
skillCamera.gameObject.SetActive(false);
skillBg.SetActive(false);
@ -84,6 +99,8 @@ namespace Gameplay.Skill
}
_cacheObjs.Clear();
_cacheLayers.Clear();
isHide = true;
}
public void AttachObj(GameObject obj)

View File

@ -46,6 +46,7 @@ namespace Gameplay.Skill
private readonly List<EventDataUseSkill> _useSkillList;
public bool needSkillPaused;
public bool waitSkillEnd;
/// <summary>
/// 当前正在释放技能的单位,仅限玩家操作的单位
/// </summary>
@ -208,7 +209,14 @@ namespace Gameplay.Skill
if (needSkillPaused)
{
_InSkilling(dt);
if (waitSkillEnd)
{
_WaitSkillEnd();
}
else
{
_InSkilling(dt);
}
}
else
{
@ -224,21 +232,18 @@ namespace Gameplay.Skill
// 等待技能使用完成
return;
}
if (_useSkillList.Count > 0)
waitSkillEnd = true;
screenEffect.StartHide();
}
private void _WaitSkillEnd()
{
// 判断动画是否结束
if (!screenEffect.isHide)
{
// 继续下一个
var skillData = _useSkillList[0];
_useSkillList.RemoveAt(0);
var unit = GetUnitSkillManager(skillData.sender);
unit.positiveSkill.Use(skillData.pointCellIndex);
inSkillingUnit = skillData.sender;
needSkillPaused = true;
return;
}
needSkillPaused = false;
_OnSkillEnd();
}
@ -272,7 +277,8 @@ namespace Gameplay.Skill
private void _OnSkillEnd()
{
screenEffect.Hide();
needSkillPaused = false;
EventManager.Instance.Send(EventManager.EventName.INFIGHT_SKILL_END_PAUSE);
@ -281,6 +287,8 @@ namespace Gameplay.Skill
private void _OnSkillStart()
{
waitSkillEnd = false;
screenEffect.Show();
EventManager.Instance.Send(EventManager.EventName.INFIGHT_SKILL_START_PAUSE);