VFX Pool, new VFX, small fixes etc

- Исправил мелкие баки в поведенчеких скриптах
- Добавил CreatureAnimationEvents.cs для унификации поведения анимационных ивентов игровых сущностей
- Добавил VFX для смерти врагов
- Добавил пул VFX, пока много багов, UNSTABLE
- Настроил исользование пула в анимационных скриптах
This commit is contained in:
Данил Ярош 2025-12-05 08:37:00 +03:00
parent ebc768d7e1
commit 92bd2d36b9
51 changed files with 376539 additions and 103 deletions

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CopilotDiffPersistence">
<option name="pendingDiffs">
<map>
<entry key="$PROJECT_DIR$/Assets/Scripts/Animations/EnemyAnimationEvents.cs">
<value>
<PendingDiffInfo>
<option name="filePath" value="$PROJECT_DIR$/Assets/Scripts/Animations/EnemyAnimationEvents.cs" />
<option name="originalContent" value="using System.Collections;&#10;using UnityEngine;&#10;&#10;using RR.Game2D.Behaviour;&#10;using RR.Game2D.Behaviour.ScriptableObjects;&#10;using RR.Game2D.Core.Managers;&#10;using UnityEngine.VFX;&#10;&#10;namespace RR.Game2D.Animations&#10;{&#10; public class EnemyAnimationEvents : MonoBehaviour, CreatureAnimationEvents&#10; {&#10; [SerializeField] private VisualEffectAsset deathVFX;&#10; &#10; private SFXAsset _stepSounds;&#10; private SFXAsset _hurtSounds;&#10;&#10; private void Awake()&#10; {&#10; // Загружаем и кэшируем звуковые эффекты из контроллера врага&#10; UpdateSFX();&#10; }&#10;&#10; public void UpdateSFX()&#10; {&#10; // Кэшируем ссылки на звуковые эффекты из контроллера врага&#10; EnemyController controller = GetComponent&lt;EnemyController&gt;();&#10; _stepSounds = controller.sfxAsset.stepSounds;&#10; _hurtSounds = controller.sfxAsset.hurtSounds;&#10; }&#10;&#10; public void OnDeath()&#10; {&#10; throw new System.NotImplementedException();&#10; }&#10;&#10; public void OnDeathBegin()&#10; {&#10; // Проигрываем звук получения урона&#10; if (_hurtSounds &amp;&amp; _hurtSounds.soundEffects.Length &gt; 0)&#10; GameManager.Instance.Audio.PlayRandomSfxAt(_hurtSounds.soundEffects, transform.position);&#10;&#10; // Переводим врага на слой &quot;No Collision&quot;&#10; gameObject.layer = LayerMask.NameToLayer(&quot;No Collision&quot;);&#10; &#10; // Получаем компоненты&#10; Rigidbody2D rb = GetComponent&lt;Rigidbody2D&gt;();&#10; Collider2D col = GetComponent&lt;Collider2D&gt;();&#10; EnemyController controller = GetComponent&lt;EnemyController&gt;();&#10; EnemyFireScript fireScript = GetComponent&lt;EnemyFireScript&gt;();&#10; &#10; // Отключаем скрипты и коллайдер&#10; if (controller) controller.enabled = false;&#10; if (fireScript) fireScript.enabled = false;&#10; if (col) col.enabled = false;&#10; if (!rb) return;&#10; &#10; // Останавливаем физику&#10; rb.linearVelocity = Vector2.zero;&#10; rb.bodyType = RigidbodyType2D.Kinematic;&#10; }&#10;&#10; public void OnDeathEnd()&#10; {&#10; // Уничтожаем врага&#10; &#10; // Создаем визуальный эффект смерти&#10; if (deathVFX)&#10; {&#10; Collider2D col = GetComponent&lt;Collider2D&gt;();&#10; GameObject vfx = VFXPool.Instance.Get(deathVFX, new Vector3(transform.position.x, col.bounds.center.y, transform.position.z));&#10; vfx.transform.rotation = transform.rotation;&#10; VisualEffect visualEffect = vfx.GetComponent&lt;VisualEffect&gt;();&#10; // visualEffect.Play();&#10; &#10; VFXPool.Instance.Return(vfx);&#10; }&#10; &#10; Destroy(gameObject);&#10; }&#10;&#10; public void OnStep()&#10; {&#10; // Проигрываем звук шага&#10; if (_stepSounds &amp;&amp; _stepSounds.soundEffects.Length &gt; 0)&#10; GameManager.Instance.Audio.PlayRandomSfxAt(_stepSounds.soundEffects, transform.position);&#10; }&#10;&#10; public void OnJump()&#10; {&#10; throw new System.NotImplementedException();&#10; }&#10; }&#10;}" />
<option name="updatedContent" value="using System.Collections;&#10;using UnityEngine;&#10;&#10;using RR.Game2D.Behaviour;&#10;using RR.Game2D.Behaviour.ScriptableObjects;&#10;using RR.Game2D.Core.Managers;&#10;using UnityEngine.VFX;&#10;&#10;namespace RR.Game2D.Animations&#10;{&#10; public class EnemyAnimationEvents : MonoBehaviour, CreatureAnimationEvents&#10; {&#10; [SerializeField] private VisualEffectAsset deathVFX;&#10; &#10; private SFXAsset _stepSounds;&#10; private SFXAsset _hurtSounds;&#10;&#10; private void Awake()&#10; {&#10; // Загружаем и кэшируем звуковые эффекты из контроллера врага&#10; UpdateSFX();&#10; }&#10;&#10; public void UpdateSFX()&#10; {&#10; // Кэшируем ссылки на звуковые эффекты из контроллера врага&#10; EnemyController controller = GetComponent&lt;EnemyController&gt;();&#10; _stepSounds = controller.sfxAsset.stepSounds;&#10; _hurtSounds = controller.sfxAsset.hurtSounds;&#10; }&#10;&#10; public void OnDeath()&#10; {&#10; throw new System.NotImplementedException();&#10; }&#10;&#10; public void OnDeathBegin()&#10; {&#10; // Проигрываем звук получения урона&#10; if (_hurtSounds &amp;&amp; _hurtSounds.soundEffects.Length &gt; 0)&#10; GameManager.Instance.Audio.PlayRandomSfxAt(_hurtSounds.soundEffects, transform.position);&#10;&#10; // Переводим врага на слой &quot;No Collision&quot;&#10; gameObject.layer = LayerMask.NameToLayer(&quot;No Collision&quot;);&#10; &#10; // Получаем компоненты&#10; Rigidbody2D rb = GetComponent&lt;Rigidbody2D&gt;();&#10; Collider2D col = GetComponent&lt;Collider2D&gt;();&#10; EnemyController controller = GetComponent&lt;EnemyController&gt;();&#10; EnemyFireScript fireScript = GetComponent&lt;EnemyFireScript&gt;();&#10; &#10; // Отключаем скрипты и коллайдер&#10; if (controller) controller.enabled = false;&#10; if (fireScript) fireScript.enabled = false;&#10; if (col) col.enabled = false;&#10; if (!rb) return;&#10; &#10; // Останавливаем физику&#10; rb.linearVelocity = Vector2.zero;&#10; rb.bodyType = RigidbodyType2D.Kinematic;&#10; }&#10;&#10; public void OnDeathEnd()&#10; {&#10; // Уничтожаем врага&#10; &#10; // Создаем визуальный эффект смерти&#10; if (deathVFX)&#10; {&#10; Collider2D col = GetComponent&lt;Collider2D&gt;();&#10; Vector3 pos = new Vector3(transform.position.x, col ? col.bounds.center.y : transform.position.y, transform.position.z);&#10; // Используем Spawn: пул сам реинициализирует, запустит Play() и вернёт объект обратно после таймаута.&#10; GameObject vfx = VFXPool.Instance.Spawn(deathVFX, pos);&#10; if (vfx) vfx.transform.rotation = transform.rotation;&#10; }&#10; &#10; Destroy(gameObject);&#10; }&#10;&#10; public void OnStep()&#10; {&#10; // Проигрываем звук шага&#10; if (_stepSounds &amp;&amp; _stepSounds.soundEffects.Length &gt; 0)&#10; GameManager.Instance.Audio.PlayRandomSfxAt(_stepSounds.soundEffects, transform.position);&#10; }&#10;&#10; public void OnJump()&#10; {&#10; throw new System.NotImplementedException();&#10; }&#10; }&#10;}" />
</PendingDiffInfo>
</value>
</entry>
</map>
</option>
</component>
</project>

View File

@ -5080,7 +5080,7 @@ AnimationClip:
m_HasMotionFloatCurves: 0
m_Events:
- time: 0.05
functionName: Step
functionName: OnStep
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 838683459b25e314b97f76ce72571c7f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,72 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-2572949660835535339
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Rotate
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: f5c49de648bf379499b732a8ee530a56, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &-1551021918643888153
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: -2572949660835535339}
m_Position: {x: 280, y: 110, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 300, y: 0, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -2572949660835535339}
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Collectible
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: -1551021918643888153}
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}

View File

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

View File

@ -0,0 +1,249 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Rotation
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 0, z: 0}
inSlope: {x: 0, y: 360, z: 0}
outSlope: {x: 0, y: 360, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.5
value: {x: 0, y: 180, z: 0}
inSlope: {x: -0, y: 360, z: -0}
outSlope: {x: 0, y: 360, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 1
value: {x: 0, y: 360, z: 0}
inSlope: {x: -0, y: 360, z: -0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.2866974, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: Sprite
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 850496168
attribute: 4
script: {fileID: 0}
typeID: 4
customType: 4
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.x
path: Sprite
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 360
outSlope: 360
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 180
inSlope: 360
outSlope: 360
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 360
inSlope: 360
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.2866974
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.y
path: Sprite
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.z
path: Sprite
classID: 4
script: {fileID: 0}
flags: 0
m_EulerEditorCurves:
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.x
path: Sprite
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.y
path: Sprite
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.z
path: Sprite
classID: 4
script: {fileID: 0}
flags: 0
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

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

View File

@ -3604,7 +3604,7 @@ AnimationClip:
m_HasMotionFloatCurves: 0
m_Events:
- time: 0
functionName: Jump
functionName: OnJump
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0

View File

@ -76,20 +76,19 @@ AnimatorStateMachine:
m_Position: {x: 800, y: 710, z: 0}
- serializedVersion: 1
m_State: {fileID: -2911048155697096596}
m_Position: {x: 240, y: -200, z: 0}
m_Position: {x: 240, y: -70, z: 0}
- serializedVersion: 1
m_State: {fileID: 8227788254774177026}
m_Position: {x: 550, y: 520, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -4830528242049520311}
- {fileID: 4425103845641678651}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 260, y: -250, z: 0}
m_EntryPosition: {x: 570, y: -250, z: 0}
m_ExitPosition: {x: 630, y: 990, z: 0}
m_ExitPosition: {x: 330, y: 840, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 8840150632353296388}
--- !u!1101 &-4830528242049520311
@ -455,31 +454,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &4425103845641678651
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Jump
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1536571424612025499}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5790086725413553050
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -505,6 +479,31 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6452080448237792631
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Jump
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1536571424612025499}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6491802289576890105
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -597,6 +596,7 @@ AnimatorState:
m_CycleOffset: 0
m_Transitions:
- {fileID: 6491802289576890105}
- {fileID: 6452080448237792631}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

View File

@ -7284,14 +7284,14 @@ AnimationClip:
m_HasMotionFloatCurves: 0
m_Events:
- time: 0.11666667
functionName: Step
functionName: OnStep
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.45
functionName: Step
functionName: OnStep
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0

View File

@ -0,0 +1 @@
Copyright 2020 The Darumadrop Project Authors (https://github.com/ManiackersDesign/darumadrop), all rights reserved.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 34dffcc94edc9c34c96f5603ae72fab6
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

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

91
Assets/Fonts/LICENSE.txt Normal file
View File

@ -0,0 +1,91 @@
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a89ffe6b9b6778d4b810fc5fca3a9523
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 46b1fbcb60ae4094fa9bb96aeb08461c
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Darumadrop One
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,2 +1,28 @@
fileFormatVersion: 2
guid: 6390a6dcbd9027a4a86259ea81394521
guid: 6390a6dcbd9027a4a86259ea81394521
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1023,6 +1023,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c381ae66536829947bba4f54a4f83f04, type: 3}
m_Name:
m_EditorClassIdentifier: '::'
deathVFX: {fileID: 8926484042661614526, guid: 6c4fdce0f9a1b184d9c3660014bdfdb5, type: 3}
--- !u!1 &1000012079282026
GameObject:
m_ObjectHideFlags: 0

View File

@ -1692,6 +1692,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c381ae66536829947bba4f54a4f83f04, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::EnemyAnimationEvents
deathVFX: {fileID: 8926484042661614526, guid: 6c4fdce0f9a1b184d9c3660014bdfdb5, type: 3}
--- !u!1 &1000013442129446
GameObject:
m_ObjectHideFlags: 0

View File

@ -404,6 +404,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c381ae66536829947bba4f54a4f83f04, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::EnemyAnimationEvents
deathVFX: {fileID: 8926484042661614526, guid: 6c4fdce0f9a1b184d9c3660014bdfdb5, type: 3}
--- !u!1 &2349200483123940370
GameObject:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,47 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7429713493570687711
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6349136321608143537}
- component: {fileID: 6733506608336628238}
m_Layer: 0
m_Name: VFX Pool
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6349136321608143537
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7429713493570687711}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6733506608336628238
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7429713493570687711}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ac9e1b576ba849b6b501a05bff492df0, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::RR.Game2D.Behaviour.VFXPool
poolSize: 32

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a36154b7e6110f9418e9d44b20e0af16
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -82,8 +82,8 @@ Animator:
m_GameObject: {fileID: 351781492710161714}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 0}
m_CullingMode: 0
m_Controller: {fileID: 9100000, guid: 5dc3990bcb1185e4fb2dfaeb428cc8c8, type: 2}
m_CullingMode: 2
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
@ -101,7 +101,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 351781492710161714}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb46007bd79608e4587a7ecfbcc3b237, type: 3}
m_Name:
@ -137,7 +137,7 @@ GameObject:
- component: {fileID: 2113465535973362073}
- component: {fileID: 787779534025234403}
m_Layer: 0
m_Name: Collectibles_01 (1)
m_Name: Sprite
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

View File

@ -11,7 +11,7 @@ GameObject:
- component: {fileID: 6866002081039623265}
- component: {fileID: 3815475667567617876}
m_Layer: 0
m_Name: Chip_Robotail_0
m_Name: Sprite
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

View File

@ -72,7 +72,7 @@ TextureImporter:
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -106,6 +106,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -72,7 +72,7 @@ TextureImporter:
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -106,6 +106,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -72,7 +72,7 @@ TextureImporter:
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -106,6 +106,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

View File

@ -392,6 +392,8 @@ TilemapRenderer:
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@ -413,6 +415,7 @@ TilemapRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

View File

@ -9794,6 +9794,126 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
m_PrefabInstance: {fileID: 2067931930}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2072045119
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2072045122}
- component: {fileID: 2072045121}
- component: {fileID: 2072045120}
m_Layer: 0
m_Name: Visual Effect
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!73398921 &2072045120
VFXRenderer:
serializedVersion: 1
m_ObjectHideFlags: 2
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2072045119}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!2083052967 &2072045121
VisualEffect:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2072045119}
m_Enabled: 1
m_Asset: {fileID: 8926484042661614526, guid: a832b00b965c1a64f8510aea0beac508, type: 3}
m_InitialEventName: OnPlay
m_InitialEventNameOverriden: 0
m_StartSeed: 0
m_ResetSeedOnPlay: 1
m_AllowInstancing: 1
m_ResourceVersion: 1
m_PropertySheet:
m_Float:
m_Array: []
m_Vector2f:
m_Array: []
m_Vector3f:
m_Array: []
m_Vector4f:
m_Array:
- m_Value: {x: 1, y: 0.24644172, z: 0, w: 1}
m_Name: ShaderColor
m_Overridden: 1
m_Uint:
m_Array: []
m_Int:
m_Array: []
m_Matrix4x4f:
m_Array: []
m_AnimationCurve:
m_Array: []
m_Gradient:
m_Array: []
m_NamedObject:
m_Array: []
m_Bool:
m_Array: []
--- !u!4 &2072045122
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2072045119}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &2093089358
PrefabInstance:
m_ObjectHideFlags: 0
@ -39912,3 +40032,4 @@ SceneRoots:
- {fileID: 1826143540}
- {fileID: 121068995}
- {fileID: 573629650}
- {fileID: 2072045122}

View File

@ -468,6 +468,123 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 86359644}
m_CullTransparentMesh: 1
--- !u!1 &118788911
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 118788912}
- component: {fileID: 118788914}
- component: {fileID: 118788913}
m_Layer: 5
m_Name: Visual Effect
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &118788912
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 118788911}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 906938208}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!73398921 &118788913
VFXRenderer:
serializedVersion: 1
m_ObjectHideFlags: 2
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 118788911}
m_Enabled: 0
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 4294967295
m_RendererPriority: 0
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 981438795
m_SortingLayer: 2
m_SortingOrder: 0
--- !u!2083052967 &118788914
VisualEffect:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 118788911}
m_Enabled: 1
m_Asset: {fileID: 8926484042661614526, guid: a832b00b965c1a64f8510aea0beac508, type: 3}
m_InitialEventName: OnPlay
m_InitialEventNameOverriden: 0
m_StartSeed: 0
m_ResetSeedOnPlay: 1
m_AllowInstancing: 1
m_ResourceVersion: 1
m_PropertySheet:
m_Float:
m_Array: []
m_Vector2f:
m_Array: []
m_Vector3f:
m_Array: []
m_Vector4f:
m_Array: []
m_Uint:
m_Array: []
m_Int:
m_Array: []
m_Matrix4x4f:
m_Array: []
m_AnimationCurve:
m_Array: []
m_Gradient:
m_Array: []
m_NamedObject:
m_Array: []
m_Bool:
m_Array: []
--- !u!1 &122148824
GameObject:
m_ObjectHideFlags: 0
@ -2125,6 +2242,42 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 857663737}
m_CullTransparentMesh: 1
--- !u!1 &906938207
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 906938208}
m_Layer: 5
m_Name: VFX
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &906938208
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 906938207}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -7.352844}
m_LocalScale: {x: 0.009076677, y: 0.009076677, z: 0.009076677}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 118788912}
m_Father: {fileID: 1388854597}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -959.95465, y: -540.0256}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &925700843
GameObject:
m_ObjectHideFlags: 0
@ -3135,7 +3288,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0.31300002}
m_AnchoredPosition: {x: -2.4137878, y: 0.44125366}
m_AnchoredPosition: {x: -2.4137878, y: 0.44128418}
m_SizeDelta: {x: -4.8276, y: 0.8829956}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1291956700
@ -3516,6 +3669,7 @@ RectTransform:
- {fileID: 2068040773}
- {fileID: 1946308721}
- {fileID: 1724863672}
- {fileID: 906938208}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}

View File

@ -133192,6 +133192,7 @@ Transform:
- {fileID: 94085880}
- {fileID: 105165846}
- {fileID: 1528420254}
- {fileID: 5483544793560561859}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1053518211
@ -434084,6 +434085,68 @@ Transform:
- {fileID: 4556580432650804423}
m_Father: {fileID: 1223969311633890084}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &5483544793560561858
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 1053302775}
m_Modifications:
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7429713493570687711, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_Name
value: VFX Pool
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
--- !u!4 &5483544793560561859 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
m_PrefabInstance: {fileID: 5483544793560561858}
m_PrefabAsset: {fileID: 0}
--- !u!1 &5546110561414543608
GameObject:
m_ObjectHideFlags: 0

View File

@ -22197,6 +22197,7 @@ Transform:
- {fileID: 5630309658864172782}
- {fileID: 1473792965}
- {fileID: 1342984456}
- {fileID: 338400549}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &89672781 stripped
@ -24779,6 +24780,68 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6ab87d9d9d9f20e4c86df42ae805f6f4, type: 3}
--- !u!1001 &338400548
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 88089423}
m_Modifications:
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.x
value: 80.39929
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.y
value: 1.6517899
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.z
value: -0.19702429
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7429713493570687711, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_Name
value: VFX Pool
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
--- !u!4 &338400549 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
m_PrefabInstance: {fileID: 338400548}
m_PrefabAsset: {fileID: 0}
--- !u!4 &352757388 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4535171522523579101, guid: 6ab87d9d9d9f20e4c86df42ae805f6f4, type: 3}

View File

@ -80325,6 +80325,7 @@ Transform:
- {fileID: 5644797161173582377}
- {fileID: 963030359}
- {fileID: 1411559338}
- {fileID: 2029761743}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &947091524
@ -162656,6 +162657,68 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1001 &2029761742
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 946646690}
m_Modifications:
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.x
value: 80.39929
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.y
value: 3.65179
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7429713493570687711, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
propertyPath: m_Name
value: VFX Pool
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
--- !u!4 &2029761743 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6349136321608143537, guid: a36154b7e6110f9418e9d44b20e0af16, type: 3}
m_PrefabInstance: {fileID: 2029761742}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2030188122
GameObject:
m_ObjectHideFlags: 0

View File

@ -688,7 +688,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.087757155, y: 0.83626276}
m_AnchorMax: {x: 0.9127319, y: 0.9977004}
m_AnchoredPosition: {x: -0.93811035, y: 30.999878}
m_AnchoredPosition: {x: -0.9375, y: 30.99988}
m_SizeDelta: {x: -1101, y: -23}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &93837866
@ -1643,7 +1643,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.085, y: 0.17039008}
m_AnchorMax: {x: 0.9127319, y: 0.83626276}
m_AnchoredPosition: {x: 0.22998047, y: -3}
m_AnchoredPosition: {x: 0.23046875, y: -3.0000305}
m_SizeDelta: {x: -0.42, y: -14}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &265801314
@ -1812,8 +1812,8 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 434895586}
m_HandleRect: {fileID: 434895585}
m_Direction: 2
m_Value: 0
m_Size: 0.999609
m_Value: 1
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -2104,7 +2104,7 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 2040132803}
m_HandleRect: {fileID: 2040132802}
m_Direction: 0
m_Value: 1
m_Value: 0
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
@ -3378,10 +3378,10 @@ RectTransform:
- {fileID: 662806478}
m_Father: {fileID: 1532558928}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -2.5, y: 0.5}
m_SizeDelta: {x: 800, y: 600}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &533613941
MonoBehaviour:
@ -3928,7 +3928,7 @@ MonoBehaviour:
m_StartCorner: 0
m_StartAxis: 1
m_CellSize: {x: 800, y: 100}
m_Spacing: {x: 0, y: 100}
m_Spacing: {x: 0, y: 50}
m_Constraint: 1
m_ConstraintCount: 1
--- !u!114 &662806480
@ -4142,7 +4142,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.34800002, y: 0.017585823}
m_AnchorMax: {x: 0.6518958, y: 0.18448228}
m_AnchoredPosition: {x: 0, y: -0.5}
m_AnchoredPosition: {x: 0, y: -0.49993896}
m_SizeDelta: {x: 0, y: -1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &683903128
@ -4239,6 +4239,42 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 683903126}
m_CullTransparentMesh: 1
--- !u!1 &700047461
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 700047462}
m_Layer: 5
m_Name: VFX
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &700047462
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 700047461}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 997740367}
m_Father: {fileID: 1460883867}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &705422857
GameObject:
m_ObjectHideFlags: 0
@ -4322,7 +4358,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 1078381204}
m_Direction: 2
m_Value: 1
m_Size: 0.87202483
m_Size: 0.84026504
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -5021,7 +5057,7 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 1191800952}
m_HandleRect: {fileID: 1191800951}
m_Direction: 0
m_Value: 1
m_Value: 0
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
@ -6580,6 +6616,123 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 996229917}
m_CullTransparentMesh: 1
--- !u!1 &997740366
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 997740367}
- component: {fileID: 997740369}
- component: {fileID: 997740368}
m_Layer: 5
m_Name: Visual Effect
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &997740367
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 997740366}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 700047462}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!73398921 &997740368
VFXRenderer:
serializedVersion: 1
m_ObjectHideFlags: 2
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 997740366}
m_Enabled: 0
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 4294967295
m_RendererPriority: 0
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 981438795
m_SortingLayer: 2
m_SortingOrder: 0
--- !u!2083052967 &997740369
VisualEffect:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 997740366}
m_Enabled: 1
m_Asset: {fileID: 8926484042661614526, guid: 6c4fdce0f9a1b184d9c3660014bdfdb5, type: 3}
m_InitialEventName: OnPlay
m_InitialEventNameOverriden: 0
m_StartSeed: 0
m_ResetSeedOnPlay: 1
m_AllowInstancing: 1
m_ResourceVersion: 1
m_PropertySheet:
m_Float:
m_Array: []
m_Vector2f:
m_Array: []
m_Vector3f:
m_Array: []
m_Vector4f:
m_Array: []
m_Uint:
m_Array: []
m_Int:
m_Array: []
m_Matrix4x4f:
m_Array: []
m_AnimationCurve:
m_Array: []
m_Gradient:
m_Array: []
m_NamedObject:
m_Array: []
m_Bool:
m_Array: []
--- !u!1 &1010062389
GameObject:
m_ObjectHideFlags: 0
@ -8956,6 +9109,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1412406034}
- {fileID: 700047462}
m_Father: {fileID: 2082092901}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@ -9588,9 +9742,8 @@ GameObject:
- component: {fileID: 1532558932}
- component: {fileID: 1532558931}
- component: {fileID: 1532558930}
- component: {fileID: 1532558929}
m_Layer: 5
m_Name: StatsModal
m_Name: StatsPlayer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -9609,28 +9762,13 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 533613940}
m_Father: {fileID: 2082092901}
m_Father: {fileID: 1851115885}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchoredPosition: {x: 609, y: 243.75}
m_SizeDelta: {x: -1300.9, y: -589.93}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1532558929
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1532558927}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c815924369a0a64458e3c85a564de8b8, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::RR.Common.UI.ModalFocusTrap
modalRoot: {fileID: 1532558927}
firstSelected: {fileID: 0}
enforce: 1
--- !u!114 &1532558930
MonoBehaviour:
m_ObjectHideFlags: 0
@ -9675,7 +9813,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.392}
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
@ -11422,7 +11560,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.087757155, y: 0.83626276}
m_AnchorMax: {x: 0.9127319, y: 0.9977004}
m_AnchoredPosition: {x: -0.93811035, y: 30.999878}
m_AnchoredPosition: {x: -0.93847656, y: 30.999878}
m_SizeDelta: {x: -1101, y: -23}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1729878442
@ -11755,7 +11893,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.023988165}
m_AnchoredPosition: {x: 0, y: -0.00006484985}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!114 &1792218764
@ -12301,6 +12439,7 @@ RectTransform:
m_Children:
- {fileID: 1994605500}
- {fileID: 1200884212}
- {fileID: 1532558928}
m_Father: {fileID: 2082092901}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@ -13127,7 +13266,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.132, y: 0.21750003}
m_AnchorMax: {x: 0.846, y: 0.5}
m_AnchoredPosition: {x: -54.5, y: -79.000015}
m_AnchoredPosition: {x: -54.5, y: -79.00001}
m_SizeDelta: {x: -107, y: -63}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1959311160
@ -13604,7 +13743,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.08675437, y: 0}
m_AnchorMax: {x: 0.91300005, y: 0.83400005}
m_AnchoredPosition: {x: 0.000061035156, y: 75.17999}
m_AnchoredPosition: {x: 0, y: 75.17999}
m_SizeDelta: {x: 0, y: -150.35}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2054206197
@ -14308,7 +14447,6 @@ RectTransform:
- {fileID: 28542763}
- {fileID: 1932206569}
- {fileID: 1460883867}
- {fileID: 1532558928}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}

View File

@ -0,0 +1,12 @@
namespace RR.Game2D.Animations
{
public interface CreatureAnimationEvents
{
void UpdateSFX();
void OnDeath();
void OnDeathBegin();
void OnDeathEnd();
void OnStep();
void OnJump();
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 42deb3d471854e348db8310b684d7c06
timeCreated: 1764833161

View File

@ -1,52 +1,92 @@
using UnityEngine;
using System.Collections;
using UnityEngine;
using RR.Game2D.Behaviour;
using RR.Game2D.Behaviour.ScriptableObjects;
using RR.Game2D.Core.Managers;
using UnityEngine.VFX;
namespace RR.Game2D.Animations
{
public class EnemyAnimationEvents : MonoBehaviour
public class EnemyAnimationEvents : MonoBehaviour, CreatureAnimationEvents
{
[SerializeField] private VisualEffectAsset deathVFX;
private SFXAsset _stepSounds;
private SFXAsset _hurtSounds;
private void Awake()
{
// Загружаем и кэшируем звуковые эффекты из контроллера врага
UpdateSFX();
}
public void UpdateSFX()
{
// Кэшируем ссылки на звуковые эффекты из контроллера врага
EnemyController controller = GetComponent<EnemyController>();
_stepSounds = controller.sfxAsset.stepSounds;
_hurtSounds = controller.sfxAsset.hurtSounds;
}
public void OnDeath()
{
throw new System.NotImplementedException();
}
public void OnDeathBegin()
{
// Проигрывание SFX для получения урона
// Проигрываем звук получения урона
if (_hurtSounds && _hurtSounds.soundEffects.Length > 0)
GameManager.Instance.Audio.PlayRandomSfxAt(_hurtSounds.soundEffects, transform.position);
// Переводим врага на слой "No Collision"
gameObject.layer = LayerMask.NameToLayer("No Collision");
// Получаем компоненты
Rigidbody2D rb = GetComponent<Rigidbody2D>();
Collider2D col = GetComponent<Collider2D>();
EnemyController controller = GetComponent<EnemyController>();
EnemyFireScript fireScript = GetComponent<EnemyFireScript>();
// Отключаем скрипты и коллайдер
if (controller) controller.enabled = false;
if (fireScript) fireScript.enabled = false;
if (col) col.enabled = false;
if (!rb) return;
// Останавливаем физику
rb.linearVelocity = Vector2.zero;
rb.bodyType = RigidbodyType2D.Kinematic;
}
public void OnDeathEnd()
{
// Уничтожаем врага
// Создаем визуальный эффект смерти
if (deathVFX)
{
Collider2D col = GetComponent<Collider2D>();
Vector3 pos = new Vector3(transform.position.x, col ? col.bounds.center.y : transform.position.y, transform.position.z);
// Используем Spawn: пул сам реинициализирует, запустит Play() и вернёт объект обратно после таймаута.
GameObject vfx = VFXPool.Instance.Spawn(deathVFX, pos);
if (vfx) vfx.transform.rotation = transform.rotation;
}
Destroy(gameObject);
}
public void Step()
public void OnStep()
{
// Проигрывание SFX для шага
// Проигрываем звук шага
if (_stepSounds && _stepSounds.soundEffects.Length > 0)
GameManager.Instance.Audio.PlayRandomSfxAt(_stepSounds.soundEffects, transform.position);
}
public void OnJump()
{
throw new System.NotImplementedException();
}
}
}

View File

@ -7,7 +7,7 @@ using RR.Game2D.Behaviour.ScriptableObjects;
namespace RR.Game2D.Animations
{
public class PlayerAnimationEvents : MonoBehaviour
public class PlayerAnimationEvents : MonoBehaviour, CreatureAnimationEvents
{
private SFXAsset _stepSounds;
private SFXAsset _hurtSounds;
@ -27,7 +27,7 @@ namespace RR.Game2D.Animations
_rb = GetComponent<Rigidbody2D>();
}
private void UpdateSFX()
public void UpdateSFX()
{
PlayerController controller = GetComponent<PlayerController>();
_stepSounds = controller.stepSounds;
@ -35,6 +35,11 @@ namespace RR.Game2D.Animations
_jumpSounds = controller.jumpSounds;
}
public void OnDeath()
{
throw new System.NotImplementedException();
}
public void OnDeathBegin()
{
if (_hurtSounds && _hurtSounds.soundEffects.Length > 0)
@ -44,19 +49,19 @@ namespace RR.Game2D.Animations
public void OnDeathEnd()
{
Animator animator = GetComponent<Animator>();
animator.ResetTrigger("Death");
// animator.ResetTrigger("Death");
gameObject.layer = LayerMask.NameToLayer("Default");
_rb.constraints = RigidbodyConstraints2D.FreezeRotation;
GameManager.Instance.RespawnPlayer();
}
public void Step()
public void OnStep()
{
if (_stepSounds && _stepSounds.soundEffects.Length > 0)
GameManager.Instance.Audio.PlayRandomSfxAt(_stepSounds.soundEffects, transform.position);
}
public void Jump()
public void OnJump()
{
if (_jumpSounds && _jumpSounds.soundEffects.Length > 0)
GameManager.Instance.Audio.PlayRandomSfxAt(_jumpSounds.soundEffects, transform.position);

View File

@ -0,0 +1,162 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VFX;
namespace RR.Game2D.Behaviour
{
/// <summary>
/// Пул объектов визуальных эффектов для переиспользования VFX и оптимизации производительности.
/// </summary>
public class VFXPool : MonoBehaviour
{
public static VFXPool Instance { get; private set; }
[SerializeField] private int poolSize = 32;
[SerializeField] private float defaultLifetime = 2f; // время жизни эффекта по умолчанию (сек)
private Queue<GameObject> _pool;
private void Awake()
{
// ---- Singleton ----
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
// -------------------
// Инициализируем очередь для хранения свободных VFX объектов
_pool = new Queue<GameObject>();
// Предварительно создаем VFX объекты для пула
for (int i = 0; i < poolSize; i++)
{
GameObject vfxGameObject = new GameObject($"VFX_{i}");
vfxGameObject.AddComponent<VisualEffect>();
// Созданные объекты сразу не активны в пуле
vfxGameObject.SetActive(false);
vfxGameObject.transform.SetParent(transform);
_pool.Enqueue(vfxGameObject);
}
}
private void OnDestroy()
{
// Если уничтожается текущий активный экземпляр, сбрасываем ссылку
if (Instance == this)
{
Instance = null;
}
}
/// <summary>
/// Получить VFX объект из пула (без автоматического запуска)
/// </summary>
/// <param name="vfxAsset">Ассет визуального эффекта для применения</param>
/// <returns>GameObject с компонентом VisualEffect или null, если не удалось получить</returns>
public GameObject Get(VisualEffectAsset vfxAsset)
{
GameObject vfxInstance;
// Проверяем, есть ли свободные объекты в пуле
if (_pool.Count > 0)
{
vfxInstance = _pool.Dequeue();
vfxInstance.SetActive(true);
VisualEffect currentVFX = vfxInstance.GetComponent<VisualEffect>();
// Если текущий ассет не совпадает с запрашиваемым, заменяем его и реинициализируем
if (currentVFX.visualEffectAsset != vfxAsset)
{
currentVFX.Stop();
currentVFX.visualEffectAsset = vfxAsset;
currentVFX.Reinit();
}
}
else
{
// Пул пуст, создаем новый VFX объект
vfxInstance = new GameObject($"VFX_{_pool.Count}");
VisualEffect vfx = vfxInstance.AddComponent<VisualEffect>();
vfx.visualEffectAsset = vfxAsset;
vfxInstance.transform.SetParent(transform);
vfxInstance.SetActive(true);
}
// Сбрасываем поворот
if (vfxInstance)
{
vfxInstance.transform.rotation = Quaternion.identity;
}
return vfxInstance;
}
/// <summary>
/// Воспроизвести VFX из пула и автоматически вернуть его позже.
/// </summary>
/// <param name="vfxAsset">Ассет визуального эффекта</param>
/// <param name="position">Позиция для эффекта</param>
/// <param name="lifetime">Время жизни эффекта в секундах (если null — будет использовано defaultLifetime)</param>
public GameObject Spawn(VisualEffectAsset vfxAsset, Vector3 position, float? lifetime = null)
{
float life = lifetime ?? defaultLifetime;
GameObject vfxInstance = Get(vfxAsset);
if (vfxInstance == null) return null;
vfxInstance.transform.position = position;
VisualEffect visualEffect = vfxInstance.GetComponent<VisualEffect>();
// Удостоверимся, что эффект корректно инициализирован и запущен
visualEffect.Reinit();
visualEffect.Play();
// Запускаем корутину, которая вернёт объект в пул после окончания времени жизни
StartCoroutine(ReturnAfterCoroutine(vfxInstance, life));
return vfxInstance;
}
private IEnumerator ReturnAfterCoroutine(GameObject vfxInstance, float seconds)
{
// Ждём указанное время. Можно заменить на более точный механизм при наличии событий от VFXGraph.
yield return new WaitForSeconds(seconds);
// Перед возвратом уверенно останавливаем эффект
var ve = vfxInstance.GetComponent<VisualEffect>();
if (ve) ve.Stop();
// Возвращаем в пул
Return(vfxInstance);
}
/// <summary>
/// Вернуть VFX объект обратно в пул для повторного использования
/// </summary>
/// <param name="vfxInstance">VFX объект для возврата в пул</param>
public void Return(GameObject vfxInstance)
{
if (vfxInstance == null) return;
VisualEffect visualEffect = vfxInstance.GetComponent<VisualEffect>();
if (visualEffect) visualEffect.Stop();
// Если пул не переполнен, деактивируем и кладём в очередь
if (_pool.Count < poolSize)
{
vfxInstance.SetActive(false);
_pool.Enqueue(vfxInstance);
}
else
{
// Пул переполнен, уничтожаем объект
Debug.Log("VFX Pool is full, destroying returned VFX instance.");
Destroy(vfxInstance);
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ac9e1b576ba849b6b501a05bff492df0
timeCreated: 1764841043

View File

@ -1,4 +1,5 @@
using System.Collections;
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.InputSystem;
@ -40,7 +41,13 @@ namespace RR.Common.UI
if (GameManager.Instance != null)
GameManager.Instance.PauseStateChanged -= HandlePauseChanged;
}
private void OnDestroy()
{
// ReSharper disable once EventUnsubscriptionViaAnonymousDelegate
if (close) close.action.performed -= _ => GameManager.Instance.TogglePause();
}
private void Awake()
{
if (resumeButton) resumeButton.onClick.AddListener(OnResumeClicked);
@ -48,14 +55,16 @@ namespace RR.Common.UI
//if (restartButton) restartButton.onClick.AddListener(OnRestartClicked);
// Изначально скрыто
SetVisible(false, instant: true);
SetVisible(false, true);
if (close) close.action.performed += _ => GameManager.Instance.TogglePause();
}
private void Update()
{
if (close.action.WasPressedThisFrame() && !GameManager.Instance.IsPaused)
GameManager.Instance.TogglePause();
}
// private void Update()
// {
// if (close.action.WasPressedThisFrame() && !GameManager.Instance.IsPaused)
// GameManager.Instance.TogglePause();
// }
/// <summary>
/// Обработка события паузы
@ -78,7 +87,7 @@ namespace RR.Common.UI
/// Метод для изменения отображения
/// </summary>
/// <param name="visible">Отображать ли меню паузы</param>
/// <param name="instant">Постоянно или нет</param>
/// <param name="instant">Мгновенно или нет</param>
private void SetVisible(bool visible, bool instant = false)
{
if (!panel) return;
@ -103,7 +112,7 @@ namespace RR.Common.UI
/// <param name="cg">Группа холстов</param>
/// <param name="target">Целевое значение альфа-канала</param>
/// <param name="duration">Продолжительность перехода</param>
private IEnumerator Fade(CanvasGroup cg, float target, float duration)
private static IEnumerator Fade(CanvasGroup cg, float target, float duration)
{
float start = cg.alpha;
float t = 0f;
@ -119,7 +128,7 @@ namespace RR.Common.UI
/// <summary>
/// Метод для возобновления игры
/// </summary>
public void OnResumeClicked() => GameManager.Instance.SetPause(false);
public static void OnResumeClicked() => GameManager.Instance.TogglePause();
//public void OnRestartClicked()
//{

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 6c4fdce0f9a1b184d9c3660014bdfdb5
VisualEffectImporter:
externalObjects: {}
serializedVersion: 1
template:
name:
category:
description:
icon: {instanceID: 0}
thumbnail: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: a832b00b965c1a64f8510aea0beac508
VisualEffectImporter:
externalObjects: {}
serializedVersion: 1
template:
name:
category:
description:
icon: {instanceID: 0}
thumbnail: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -40,7 +40,7 @@ MonoBehaviour:
x: 616
y: -1434
width: 710
height: 2410
height: 2477
--- !u!114 &114350483966674976
MonoBehaviour:
m_ObjectHideFlags: 1

358426
Assets/_Recovery/0.unity Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: bb456ced8ebe5c14682d1e8345303da6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: