Merge branch 'dev-maham' into Achievements

Achievements
Hazim Bin Ijaz 2 days ago
commit ccb2741265

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

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

@ -0,0 +1,221 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1107 &-8515502852573860788
AnimatorStateMachine:
serializedVersion: 5
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Layer
m_ChildStates: []
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: 0}
--- !u!1102 &-6024793714723776394
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ScaleDownRemove
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: b8f892a9acfa3dd4abcc3822677f30fc, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-3398981520297007735
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Wait
m_Speed: 20000
m_CycleOffset: 0
m_Transitions:
- {fileID: -1089769901319746500}
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!1101 &-1089769901319746500
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: ScaleDown
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -6024793714723776394}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: AchievementScale
serializedVersion: 5
m_AnimatorParameters:
- m_Name: ScaleDown
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 7328654614666641954}
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!1109 &3267490031595275040
AnimatorTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -6024793714723776394}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 1
--- !u!1102 &6286268484249351856
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ScaleDownRemove 0
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: b8f892a9acfa3dd4abcc3822677f30fc, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &6367317772926085654
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New State
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!1107 &7328654614666641954
AnimatorStateMachine:
serializedVersion: 5
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: -3398981520297007735}
m_Position: {x: 240, y: 110, z: 0}
- serializedVersion: 1
m_State: {fileID: -6024793714723776394}
m_Position: {x: 240, y: 190, z: 0}
- serializedVersion: 1
m_State: {fileID: 6286268484249351856}
m_Position: {x: 0, y: 0, 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: -3398981520297007735}

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

@ -0,0 +1,205 @@
%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: ScaleDownRemove
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 1, y: 1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, 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.16666667
value: {x: 0, y: 0, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, 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.33333334
value: {x: 0, y: 0, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, 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}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path:
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: 0
attribute: 3
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.33333334
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:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.33333334
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.x
path:
classID: 224
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.33333334
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.y
path:
classID: 224
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.33333334
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.z
path:
classID: 224
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

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

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

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 9492b32862561624aa75d621f48074c5
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 3400fb2a60564af4db6cc1c28c188006
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

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

@ -0,0 +1,269 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using CustomEditorTools;
[CustomEditor(typeof(AchievementManager))]
public class AchievementManagerEditor : Editor
{
AchievementManager MyTarget; //Reference to selected object
int SelectedTab; //Tab that is currently active
#region Styles
GUIStyle ManageBackground = new GUIStyle();
GUIStyle Border = new GUIStyle();
GUIStyle ManageInsideBackground = new GUIStyle();
GUIStyle RowButton = new GUIStyle();
GUIStyle ProgressBar = new GUIStyle();
#endregion
List<bool> Hidden = new List<bool>(); //If each achievement in the list is hidden
bool HideAll = true; //Button click to hide or show all
void OnApplicationQuit()
{
//MyTarget.LoadAchievementState();
}
void Awake()
{
MyTarget = (AchievementManager) target;
MyTarget.LoadAchievementState();
for (int i = 0; i < MyTarget.AchievementList.Count; i ++)
{
Hidden.Add(false);
}
bool LightMode = !EditorGUIUtility.isProSkin;
#region Editor Styles
ManageBackground.normal.background = CET.MakeEditorBackgroundColor(LightMode ?
new Color(0.805f, 0.805f, 0.813f) :
new Color(0.4f, 0.4f, 0.4f)
);
ManageBackground.padding = new RectOffset(5, 5, 5, 5);
ManageInsideBackground.normal.background = CET.MakeEditorBackgroundColor(LightMode ?
new Color(0.629f, 0.629f, 0.629f) :
new Color(0.5f, 0.5f, 0.5f)
);
ManageInsideBackground.padding = new RectOffset(0, 0, 5, 5);
RowButton.padding = new RectOffset();
RowButton.fixedHeight = 20;
RowButton.fixedWidth = 20;
RowButton.margin = new RectOffset(0, 5, 0, 0);
ProgressBar.normal.background = CET.MakeEditorBackgroundColor(Color.blue);
ProgressBar.margin = new RectOffset(0, 5, 0, 0);
Border.normal.background = CET.MakeEditorBackgroundColor(new Color(0.2f, 0.2f, 0.2f));
Border.padding = new RectOffset(3, 3, 3, 3);
Border.margin = new RectOffset(0, 0, 0, 10);
#endregion
}
public override void OnInspectorGUI()
{
serializedObject.Update();
GUILayout.Space(10);
SelectedTab = GUILayout.Toolbar(SelectedTab, new string[] { "Settings", "Achievement List" });
GUILayout.Space(10);
switch (SelectedTab)
{
case 0:
DrawSettings();
break;
case 1:
DrawAchievementList();
break;
}
serializedObject.ApplyModifiedProperties();
}
public void DrawAchievementList ()
{
if (GUILayout.Button(HideAll ? "Show All" : "Hide All", GUILayout.Width(70)))
{
for(int i = 0; i < Hidden.Count; i++)
{
Hidden[i] = HideAll;
}
HideAll = !HideAll;
}
for (int i = 0; i < MyTarget.AchievementList.Count; i++)
{
DrawAchievement(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i), i);
}
GUILayout.Space(10);
if (GUILayout.Button("Add"))
{
MyTarget.AchievementList.Add(new AchievementInfromation());
MyTarget.States.Add(new AchievementState());
MyTarget.SaveAchievementState();
Hidden.Add(false);
}
CET.HorizontalLine();
EditorGUILayout.PropertyField(serializedObject.FindProperty("UseFinalAchievement"));
GUILayout.Label("Define an achievement which will be unlocked once all other have been completed");
if (MyTarget.UseFinalAchievement)
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("FinalAchievementKey"));
}
CET.HorizontalLine();
}
public void DrawAchievement(SerializedProperty Achievement, int Index)
{
GUILayout.BeginVertical(Border);
GUILayout.BeginVertical(ManageBackground);
GUILayout.BeginHorizontal(ManageInsideBackground);
int i = (int)Index;
if (GUILayout.Button(Resources.Load<Texture2D>(Hidden[i] ? "Plus" : "Minus"), RowButton))
{
Hidden[i] = !Hidden[i];
}
if (MyTarget.UseFinalAchievement && MyTarget.FinalAchievementKey.Equals(MyTarget.AchievementList[i].Key))
{
GUILayout.Box(Resources.Load<Texture2D>("CompleteAllIcon"), RowButton);
}
GUILayout.Label("(" + i + ") " + MyTarget.AchievementList[i].DisplayName);
if (i > 0 && GUILayout.Button(Resources.Load<Texture2D>("Up"), RowButton))
{
AchievementInfromation temp = MyTarget.AchievementList[i];
MyTarget.AchievementList[i] = MyTarget.AchievementList[i - 1];
MyTarget.AchievementList[i - 1] = temp;
AchievementState temp2 = MyTarget.States[i];
MyTarget.States[i] = MyTarget.States[i - 1];
MyTarget.States[i - 1] = temp2;
MyTarget.SaveAchievementState();
}
if (i < MyTarget.AchievementList.Count - 1 && GUILayout.Button(Resources.Load<Texture2D>("Down"), RowButton))
{
AchievementInfromation temp = MyTarget.AchievementList[i];
MyTarget.AchievementList[i] = MyTarget.AchievementList[i + 1];
MyTarget.AchievementList[i + 1] = temp;
AchievementState temp2 = MyTarget.States[i];
MyTarget.States[i] = MyTarget.States[i + 1];
MyTarget.States[i + 1] = temp2;
MyTarget.SaveAchievementState();
}
if (GUILayout.Button(Resources.Load<Texture2D>("Cross"), RowButton))
{
MyTarget.AchievementList.RemoveAt(i);
Hidden.RemoveAt(i);
MyTarget.States.RemoveAt(i);
MyTarget.SaveAchievementState();
Repaint();
return;
}
GUILayout.EndHorizontal();
if (Hidden[i])
{
GUILayout.Space(10);
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Key"));
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("DisplayName"));
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Description"));
GUILayout.Space(10);
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("LockedIcon"));
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("LockOverlay"));
GUILayout.Space(5);
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("AchievedIcon"));
GUILayout.Space(10);
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Spoiler"));
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Progression"));
if (Achievement.FindPropertyRelative("Progression").boolValue)
{
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("ProgressGoal"));
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("NotificationFrequency"));
EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("ProgressSuffix"));
}
}
GUILayout.EndVertical();
GUILayout.EndVertical();
}
public void DrawSettings()
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("DisplayTime"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("NumberOnScreen"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("DisplayAchievements"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("SpoilerAchievementMessage"));
if (MyTarget.DisplayAchievements)
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("StackLocation"));
}
EditorGUILayout.PropertyField(serializedObject.FindProperty("ShowExactProgress"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("AutoSave"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("ProgressMadeSound"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievedSound"));
CET.HorizontalLine();
GUILayout.BeginVertical(ManageBackground);
for (int i = 0; i < MyTarget.AchievementList.Count; i++)
{
Rect ProgressBarRect;
Rect r = EditorGUILayout.BeginHorizontal(ManageInsideBackground);
GUILayout.Label("[" + i + "] " + MyTarget.AchievementList[i].DisplayName + " (" + MyTarget.AchievementList[i].Key + ")", GUILayout.Width(250));
if (MyTarget.AchievementList[i].Progression)
{
float Progress = MyTarget.States[i].Progress / MyTarget.AchievementList[i].ProgressGoal;
ProgressBarRect = EditorGUILayout.BeginHorizontal(ProgressBar, GUILayout.ExpandWidth(true));
GUILayout.Label("");
EditorGUILayout.EndHorizontal();
EditorGUI.ProgressBar(ProgressBarRect, Progress, "" + MyTarget.States[i].Progress + " / " + MyTarget.AchievementList[i].ProgressGoal + " (" + (Progress * 100) + "%)");
}
else
{
GUILayout.Label(MyTarget.States[i].Achieved ? "True" : "False");
}
if (MyTarget.UseFinalAchievement && MyTarget.FinalAchievementKey.Equals(MyTarget.AchievementList[i].Key))
{
GUILayout.Box(Resources.Load<Texture2D>("CompleteAllIcon"), RowButton);
}
EditorGUILayout.EndHorizontal();
GUILayout.Space(2);
}
GUILayout.EndVertical();
CET.HorizontalLine();
GUILayout.BeginHorizontal();
if (GUILayout.Button("Manual Save"))
{
MyTarget.SaveAchievementState();
}
if (GUILayout.Button("Reset All States"))
{
if(EditorUtility.DisplayDialog("Reset Confirmation", "Are you sure you want to reset all achevement states?", "Reset", "Cancel"))
{
MyTarget.ResetAchievementState();
}
}
GUILayout.EndHorizontal();
CET.HorizontalLine();
}
}

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: edacd578eb8b24b4a82525a3e3427b2a
timeCreated: 1539679771
licenseType: Store
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,41 @@
using UnityEngine;
using UnityEditor;
namespace CustomEditorTools
{
/// <summary>
/// A set of editor tools used to speed up custom editor creation
/// </summary>
static public class CET
{
/// <summary>
/// Creates a 1X1 Images with the input color. Use to color editor backgrounds
/// </summary>
/// <param name="Color">Color of background image</param>
static public Texture2D MakeEditorBackgroundColor (Color Color)
{
Texture2D t = new Texture2D(1, 1);
t.SetPixel(0, 0, Color);
t.Apply();
return t;
}
/// <summary>
/// Loads a images as a Texture2D
/// </summary>
/// <param name="Path">Path of image file e.g. Asset\Folder1\Folder2\file.png</param>
/// <returns></returns>
static public Texture2D LoadImageFromFile (string Path)
{
return (Texture2D)AssetDatabase.LoadAssetAtPath(Path, typeof(Texture2D));
}
/// <summary>
/// Draw a simple dividing line on an custom editor
/// </summary>
static public void HorizontalLine ()
{
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
}
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d8b387d8b1c3d644bae399b0103c7232
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@ -0,0 +1,90 @@
fileFormatVersion: 2
guid: b35215edbf2534b4b8e6f04125b91f13
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

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

@ -0,0 +1,26 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Example Code Only
/// </summary>
public class ExampleScript : MonoBehaviour
{
public void Add1 (string Name)
{
AchievementManager.instance.AddAchievementProgress(Name, 1);
}
public void Add5(string Name)
{
AchievementManager.instance.AddAchievementProgress(Name, 5);
}
public void Add10(string Name)
{
AchievementManager.instance.AddAchievementProgress(Name, 10);
}
public void Add100(string Name)
{
AchievementManager.instance.AddAchievementProgress(Name, 100);
}
}

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 916b1337edbece241b6b7f158bd1bff3
timeCreated: 1538721030
licenseType: Store
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

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

File diff suppressed because it is too large Load Diff

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 52f308551e6b1a347a3a0d7de8089fa2
timeCreated: 1538562293
licenseType: Store
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,103 @@
fileFormatVersion: 2
guid: 28906be28f657f54aa031e4f55f6221d
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

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

@ -0,0 +1,303 @@
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Linq;
/// <summary>
/// Controls interactions with the Achievement System
/// </summary>
[System.Serializable]
public class AchievementManager : MonoBehaviour
{
[Tooltip("The number of seconds an achievement will stay on the screen after being unlocked or progress is made.")]
public float DisplayTime = 3;
[Tooltip("The total number of achievements which can be on the screen at any one time.")]
public int NumberOnScreen = 3;
[Tooltip("If true, progress notifications will display their exact progress. If false it will show the closest bracket.")]
public bool ShowExactProgress = false;
[Tooltip("If true, achievement unlocks/progress update notifications will be displayed on the player's screen.")]
public bool DisplayAchievements;
[Tooltip("The location on the screen where achievement notifications should be displayed.")]
public AchievementStackLocation StackLocation;
[Tooltip("If true, the state of all achievements will be saved without any call to the manual save function (Recommended = true)")]
public bool AutoSave;
[Tooltip("The message which will be displayed on the UI if an achievement is marked as a spoiler.")]
public string SpoilerAchievementMessage = "Hidden";
[Tooltip("The sound which plays when an achievement is unlocked is displayed to a user. Sounds are only played when Display Achievements is true.")]
public AudioClip AchievedSound;
[Tooltip("The sound which plays when a progress update is displayed to a user. Sounds are only played when Display Achievements is true.")]
public AudioClip ProgressMadeSound;
private AudioSource AudioSource;
[SerializeField] public List<AchievementState> States = new List<AchievementState>(); //List of achievement states (achieved, progress and last notification)
[SerializeField] public List<AchievementInfromation> AchievementList = new List<AchievementInfromation>(); //List of all available achievements
[Tooltip("If true, one achievement will be automatically unlocked once all others have been completed")]
public bool UseFinalAchievement = false;
[Tooltip("The key of the final achievement")]
public string FinalAchievementKey;
public static AchievementManager instance = null; //Singleton Instance
public AchievenmentStack Stack;
void Awake()
{
if (instance == null)
{
instance = this;
}
else if (instance != this)
{
Destroy(gameObject);
}
DontDestroyOnLoad(gameObject);
AudioSource = gameObject.GetComponent<AudioSource>();
Stack = GetComponentInChildren<AchievenmentStack>();
LoadAchievementState();
}
private void PlaySound (AudioClip Sound)
{
if(AudioSource != null)
{
AudioSource.clip = Sound;
AudioSource.Play();
}
}
# region Miscellaneous
/// <summary>
/// Does an achievement exist in the list
/// </summary>
/// <param name="Key">The Key of the achievement to test</param>
/// <returns>true : if exists. false : does not exist</returns>
public bool AchievementExists(string Key)
{
return AchievementExists(AchievementList.FindIndex(x => x.Key.Equals(Key)));
}
/// <summary>
/// Does an achievement exist in the list
/// </summary>
/// <param name="Index">The index of the achievement to test</param>
/// <returns>true : if exists. false : does not exist</returns>
public bool AchievementExists(int Index)
{
return Index <= AchievementList.Count && Index >= 0;
}
/// <summary>
/// Returns the total number of achievements which have been unlocked.
/// </summary>
public int GetAchievedCount()
{
int Count = (from AchievementState i in States
where i.Achieved == true
select i).Count();
return Count;
}
/// <summary>
/// Returns the current percentage of unlocked achievements.
/// </summary>
public float GetAchievedPercentage()
{
if(States.Count == 0)
{
return 0;
}
return (float)GetAchievedCount() / States.Count * 100;
}
#endregion
#region Unlock and Progress
/// <summary>
/// Fully unlocks a progression or goal achievement.
/// </summary>
/// <param name="Key">The Key of the achievement to be unlocked</param>
public void Unlock(string Key)
{
Unlock(FindAchievementIndex(Key));
}
/// <summary>
/// Fully unlocks a progression or goal achievement.
/// </summary>
/// <param name="Index">The index of the achievement to be unlocked</param>
public void Unlock(int Index)
{
if (!States[Index].Achieved)
{
States[Index].Progress = AchievementList[Index].ProgressGoal;
States[Index].Achieved = true;
DisplayUnlock(Index);
AutoSaveStates();
if(UseFinalAchievement)
{
int Find = States.FindIndex(x => !x.Achieved);
bool CompletedAll = (Find == -1 || AchievementList[Find].Key.Equals(FinalAchievementKey));
if (CompletedAll)
{
Unlock(FinalAchievementKey);
}
}
}
}
/// <summary>
/// Set the progress of an achievement to a specific value.
/// </summary>
/// <param name="Key">The Key of the achievement</param>
/// <param name="Progress">Set progress to this value</param>
public void SetAchievementProgress(string Key, float Progress)
{
SetAchievementProgress(FindAchievementIndex(Key), Progress);
}
/// <summary>
/// Set the progress of an achievement to a specific value.
/// </summary>
/// <param name="Index">The index of the achievement</param>
/// <param name="Progress">Set progress to this value</param>
public void SetAchievementProgress(int Index, float Progress)
{
if(AchievementList[Index].Progression)
{
if (States[Index].Progress >= AchievementList[Index].ProgressGoal)
{
Unlock(Index);
}
else
{
States[Index].Progress = Progress;
DisplayUnlock(Index);
AutoSaveStates();
}
}
}
/// <summary>
/// Adds the input amount of progress to an achievement. Clamps achievement progress to its max value.
/// </summary>
/// <param name="Key">The Key of the achievement</param>
/// <param name="Progress">Add this number to progress</param>
public void AddAchievementProgress(string Key, float Progress)
{
AddAchievementProgress(FindAchievementIndex(Key), Progress);
}
/// <summary>
/// Adds the input amount of progress to an achievement. Clamps achievement progress to its max value.
/// </summary>
/// <param name="Index">The index of the achievement</param>
/// <param name="Progress">Add this number to progress</param>
public void AddAchievementProgress(int Index, float Progress)
{
if (AchievementList[Index].Progression)
{
if (States[Index].Progress + Progress >= AchievementList[Index].ProgressGoal)
{
Unlock(Index);
}
else
{
States[Index].Progress += Progress;
DisplayUnlock(Index);
AutoSaveStates();
}
}
}
#endregion
#region Saving and Loading
/// <summary>
/// Saves progress and achieved states to player prefs. Used to allow reload of data between game loads. This function is automatically called if the Auto Save setting is set to true.
/// </summary>
public void SaveAchievementState()
{
for (int i = 0; i < States.Count; i++)
{
PlayerPrefs.SetString("AchievementState_" + i, JsonUtility.ToJson(States[i]));
}
PlayerPrefs.Save();
}
/// <summary>
/// Loads all progress and achievement states from player prefs. This function is automatically called if the Auto Load setting is set to true.
/// </summary>
public void LoadAchievementState()
{
AchievementState NewState;
States.Clear();
for (int i = 0; i < AchievementList.Count; i++)
{
//Ensure that new project get default values
if (PlayerPrefs.HasKey("AchievementState_" + i))
{
NewState = JsonUtility.FromJson<AchievementState>(PlayerPrefs.GetString("AchievementState_" + i));
States.Add(NewState);
}
else { States.Add(new AchievementState()); }
}
}
/// <summary>
/// Clears all saved progress and achieved states.
/// </summary>
public void ResetAchievementState()
{
States.Clear();
for (int i = 0; i < AchievementList.Count; i++)
{
PlayerPrefs.DeleteKey("AchievementState_" + i);
States.Add(new AchievementState());
}
SaveAchievementState();
}
#endregion
/// <summary>
/// Find the index of an achievement with a cetain key
/// </summary>
/// <param name="Key">Key of achievevment</param>
private int FindAchievementIndex(string Key)
{
return AchievementList.FindIndex(x => x.Key.Equals(Key));
}
/// <summary>
/// Test if AutoSave is valid. If true, save list
/// </summary>
private void AutoSaveStates()
{
if (AutoSave)
{
SaveAchievementState();
}
}
/// <summary>
/// Display achievements progress to screen
/// </summary>
/// <param name="Index">Index of achievement to display</param>
private void DisplayUnlock(int Index)
{
if (DisplayAchievements && !AchievementList[Index].Spoiler || States[Index].Achieved)
{
//If not achieved
if (AchievementList[Index].Progression && States[Index].Progress < AchievementList[Index].ProgressGoal)
{
int Steps = (int)AchievementList[Index].ProgressGoal / (int)AchievementList[Index].NotificationFrequency;
//Loop through all notification point backwards from last possible option
for (int i = Steps; i > States[Index].LastProgressUpdate; i--)
{
//When it finds the largest valid notification point
if (States[Index].Progress >= AchievementList[Index].NotificationFrequency * i)
{
PlaySound(ProgressMadeSound);
States[Index].LastProgressUpdate = i;
Stack.ScheduleAchievementDisplay(Index);
return;
}
}
}
else
{
PlaySound(AchievedSound);
Stack.ScheduleAchievementDisplay(Index);
}
}
}
}

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 23953d3cc6573c745b3dc7bc5720c369
timeCreated: 1538435283
licenseType: Store
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,98 @@
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Add list of achievements to screen
/// </summary>
public class AchievenmentListIngame : MonoBehaviour
{
[HideInInspector] public GameObject scrollContent;
[HideInInspector] public GameObject prefab;
[HideInInspector] public GameObject Menu;
[HideInInspector] public Dropdown Filter;
[HideInInspector] public Text CountText;
[HideInInspector] public Text CompleteText;
[HideInInspector] public Scrollbar Scrollbar;
private bool MenuOpen = false;
[Tooltip("Key used to open UI menu. Set to \"None\" to prevent menu from opening with any key press")]
public KeyCode OpenMenuKey; //Key to open in-game menu
/// <summary>
/// Adds all achievements to the UI based on a filter
/// </summary>
/// <param name="Filter">Filter to use (All, Achieved or Unachieved)</param>
private void AddAchievements(string Filter)
{
foreach (Transform child in scrollContent.transform)
{
Destroy(child.gameObject);
}
AchievementManager AM = AchievementManager.instance;
int AchievedCount = AM.GetAchievedCount();
CountText.text = "" + AchievedCount + " / " + AM.States.Count;
CompleteText.text = "Complete (" + AM.GetAchievedPercentage() + "%)";
for (int i = 0; i < AM.AchievementList.Count; i ++)
{
if((Filter.Equals("All")) || (Filter.Equals("Achieved") && AM.States[i].Achieved) || (Filter.Equals("Unachieved") && !AM.States[i].Achieved))
{
AddAchievementToUI(AM.AchievementList[i], AM.States[i]);
}
}
Scrollbar.value = 2;
}
public void AddAchievementToUI(AchievementInfromation Achievement, AchievementState State)
{
UIAchievement UIAchievement = Instantiate(prefab, new Vector3(0f, 0f, 0f), Quaternion.identity).GetComponent<UIAchievement>();
UIAchievement.Set(Achievement, State);
UIAchievement.transform.SetParent(scrollContent.transform);
}
/// <summary>
/// Filter out a set of locked or unlocked achievements
/// </summary>
public void ChangeFilter ()
{
AddAchievements(Filter.options[Filter.value].text);
}
/// <summary>
/// Closes the UI window.
/// </summary>
public void CloseWindow()
{
MenuOpen = false;
Menu.SetActive(MenuOpen);
}
/// <summary>
/// Opens the UI window.
/// </summary>
public void OpenWindow()
{
MenuOpen = true;
Menu.SetActive(MenuOpen);
AddAchievements("All");
}
/// <summary>
/// Toggles the state of the UI window open or closed
/// </summary>
public void ToggleWindow()
{
if (MenuOpen){
CloseWindow();
}
else{
OpenWindow();
}
}
private void Update()
{
if(Input.GetKeyDown(OpenMenuKey))
{
ToggleWindow();
}
}
}

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 4649ecec4d59d264faf94e9ac18561b6
timeCreated: 1565680274
licenseType: Store
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,62 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Controls the display of achievements on the screen
/// </summary>
public class AchievenmentStack : MonoBehaviour
{
public RectTransform[] StackPanels;
public List<UIAchievement> BackLog = new List<UIAchievement>();
public GameObject AchievementTemplate;
private AchievementManager AM;
private void Start()
{
AM = AchievementManager.instance;
}
/// <summary>
/// Add an achievement to screen if it fits, otherwise, add to the backlog list
/// </summary>
/// <param name="Index">Index of achievement to add</param>
public void ScheduleAchievementDisplay (int Index)
{
var Spawned = Instantiate(AchievementTemplate).GetComponent<UIAchievement>();
Spawned.AS = this;
Spawned.Set(AM.AchievementList[Index], AM.States[Index]);
//If there is room on the screen
if (GetCurrentStack().childCount < AM.NumberOnScreen)
{
Spawned.transform.SetParent(GetCurrentStack(), false);
Spawned.StartDeathTimer();
}
else
{
Spawned.gameObject.SetActive(false);
BackLog.Add(Spawned);
}
}
/// <summary>
/// Find the box where achievements should be spawned
/// </summary>
public Transform GetCurrentStack () => StackPanels[(int)AM.StackLocation].transform;
/// <summary>
/// Add one achievement from the backlog to the screen
/// </summary>
public void CheckBackLog ()
{
if(BackLog.Count > 0)
{
BackLog[0].transform.SetParent(GetCurrentStack(), false);
BackLog[0].gameObject.SetActive(true);
BackLog[0].StartDeathTimer();
BackLog.RemoveAt(0);
}
}
}

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 7cdc328a33300e34d9812896a5035b37
timeCreated: 1538562588
licenseType: Store
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,63 @@
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Storesinformation related to a single achievement
/// </summary>
[System.Serializable]
public struct AchievementInfromation
{
[Tooltip("Name used to unlock/set achievement progress")]
[SerializeField] public string Key;
[Tooltip("The display name for an achievement. Shown to the user on the UI.")]
[SerializeField] public string DisplayName;
[Tooltip("Description for an achievement. Shown to the user on the UI.")]
[SerializeField] public string Description;
[Tooltip("The icon which will be displayed when the achievement is locked")]
[SerializeField] public Sprite LockedIcon;
[Tooltip("If true, the lock icon will be overlayed on top of the achieved version.")]
[SerializeField] public bool LockOverlay;
[Tooltip("The icon which will be displayed when the achievement is Achieved")]
[SerializeField] public Sprite AchievedIcon;
[Tooltip("Treat the achievement as a spoiler for the game. Hidden from player until unlocked.")]
[SerializeField] public bool Spoiler;
[Tooltip("If true, this achievement will count to a certain amount before unlocking. E.g. race a total of 500 km, collect 10 coins or reach a high score of 25.")]
[SerializeField] public bool Progression;
[Tooltip("The goal which must be reached for the achievement to unlock.")]
[SerializeField] public float ProgressGoal;
[Tooltip("The rate that progress updates will be displayed on the screen e.g. Progress goal = 100 and Notification Frequency = 25. In this example, the progress will be displayed at 25,50,75 and 100.")]
[SerializeField] public float NotificationFrequency;
[Tooltip("A string which will be displayed with a progress achievement e.g. $, KM, Miles etc")]
[SerializeField] public string ProgressSuffix;
public int AchievementIndex { get; internal set; }
}
/// <summary>
/// Stores the current progress and achieved state
/// </summary>
[System.Serializable]
public class AchievementState
{
public AchievementState(float NewProgress, bool NewAchieved)
{
Progress = NewProgress;
Achieved = NewAchieved;
}
public AchievementState() { }
[SerializeField] public float Progress; //Progress towards goal
[SerializeField] public int LastProgressUpdate = 0; //Last achievement notification bracket
[SerializeField] public bool Achieved = false; //Is the achievement unlocked
}
/// <summary>
/// Place where an achievement will be displayed on the screen
/// </summary>
public enum AchievementStackLocation
{
TopLeft,
TopRight,
BottomLeft,
BottomRight
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f322a442efbf9624f89d56274fb96989
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,83 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Defines the logic behind a single achievement on the UI
/// </summary>
public class UIAchievement : MonoBehaviour
{
public Text Title, Description, Percent;
public Image Icon, OverlayIcon, ProgressBar;
public GameObject SpoilerOverlay;
public Text SpoilerText;
[HideInInspector]public AchievenmentStack AS;
/// <summary>
/// Destroy object after a certain amount of time
/// </summary>
public void StartDeathTimer ()
{
StartCoroutine(Wait());
}
/// <summary>
/// Add information about an Achievement to the UI elements
/// </summary>
public void Set (AchievementInfromation Information, AchievementState State)
{
if(Information.Spoiler && !State.Achieved)
{
SpoilerOverlay.SetActive(true);
SpoilerText.text = AchievementManager.instance.SpoilerAchievementMessage;
}
else
{
Title.text = Information.DisplayName;
Description.text = Information.Description;
if (Information.LockOverlay && !State.Achieved)
{
OverlayIcon.gameObject.SetActive(true);
OverlayIcon.sprite = Information.LockedIcon;
Icon.sprite = Information.AchievedIcon;
}
else
{
Icon.sprite = State.Achieved ? Information.AchievedIcon : Information.LockedIcon;
}
if (Information.Progression)
{
float CurrentProgress = AchievementManager.instance.ShowExactProgress ? State.Progress : (State.LastProgressUpdate * Information.NotificationFrequency);
float DisplayProgress = State.Achieved ? Information.ProgressGoal : CurrentProgress;
if (State.Achieved)
{
Percent.text = Information.ProgressGoal + Information.ProgressSuffix + " / " + Information.ProgressGoal + Information.ProgressSuffix + " (Achieved)";
}
else
{
Percent.text = DisplayProgress + Information.ProgressSuffix + " / " + Information.ProgressGoal + Information.ProgressSuffix;
}
ProgressBar.fillAmount = DisplayProgress / Information.ProgressGoal;
}
else //Single Time
{
ProgressBar.fillAmount = State.Achieved ? 1 : 0;
Percent.text = State.Achieved ? "(Achieved)" : "(Locked)";
}
}
}
private IEnumerator Wait ()
{
yield return new WaitForSeconds(AchievementManager.instance.DisplayTime);
GetComponent<Animator>().SetTrigger("ScaleDown");
yield return new WaitForSeconds(0.1f);
AS.CheckBackLog();
Destroy(gameObject);
}
}

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: f6560818a46314e458030cadd68d4e5a
timeCreated: 1538732020
licenseType: Store
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

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

@ -15,7 +15,7 @@ GameObject:
- component: {fileID: 1790415148045804974}
m_Layer: 5
m_Name: PipeCell0
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -156,7 +156,7 @@ GameObject:
- component: {fileID: 1790415148045804945}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

@ -11,7 +11,7 @@ GameObject:
- component: {fileID: 1790415148045804960}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -51,7 +51,7 @@ GameObject:
- component: {fileID: 1790415148045804984}
m_Layer: 5
m_Name: PipeCell1
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

@ -188,7 +188,7 @@ GameObject:
- component: {fileID: 1790415148045804942}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -228,7 +228,7 @@ GameObject:
- component: {fileID: 1790415148045804976}
m_Layer: 5
m_Name: PipeCell2
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -338,7 +338,7 @@ MonoBehaviour:
correctRotateDelta: 2
redundant: 0
_rotationValue: 0
cellKind: 1
cellKind: 0
--- !u!114 &1790415148045804976
MonoBehaviour:
m_ObjectHideFlags: 0

@ -211,7 +211,7 @@ GameObject:
- component: {fileID: 1790415148045804962}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -251,7 +251,7 @@ GameObject:
- component: {fileID: 1790415148045804995}
m_Layer: 5
m_Name: PipeCell3
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -361,7 +361,7 @@ MonoBehaviour:
correctRotateDelta: 4
redundant: 0
_rotationValue: 0
cellKind: 3
cellKind: 0
--- !u!114 &1790415148045804995
MonoBehaviour:
m_ObjectHideFlags: 0

@ -15,7 +15,7 @@ GameObject:
- component: {fileID: 1790415148045804968}
m_Layer: 5
m_Name: PipeCell4
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -125,7 +125,7 @@ MonoBehaviour:
correctRotateDelta: 4
redundant: 0
_rotationValue: 0
cellKind: 2
cellKind: 0
--- !u!114 &1790415148045804968
MonoBehaviour:
m_ObjectHideFlags: 0
@ -258,7 +258,7 @@ GameObject:
- component: {fileID: 1790415148045804950}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

@ -169,7 +169,7 @@ GameObject:
- component: {fileID: 1790415148045804973}
m_Layer: 5
m_Name: PipeCell5
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -296,7 +296,7 @@ MonoBehaviour:
correctRotateDelta: 2
redundant: 0
_rotationValue: 0
cellKind: 5
cellKind: 0
--- !u!114 &1790415148045804973
MonoBehaviour:
m_ObjectHideFlags: 0
@ -352,7 +352,7 @@ GameObject:
- component: {fileID: 1790415148045804953}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

@ -88,7 +88,7 @@ GameObject:
- component: {fileID: 1790415148045804948}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -206,7 +206,7 @@ GameObject:
- component: {fileID: 1790415148045804979}
m_Layer: 5
m_Name: PipeCell6
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -333,7 +333,7 @@ MonoBehaviour:
correctRotateDelta: 1
redundant: 0
_rotationValue: 0
cellKind: 4
cellKind: 0
--- !u!114 &1790415148045804979
MonoBehaviour:
m_ObjectHideFlags: 0

@ -176,7 +176,7 @@ GameObject:
- component: {fileID: 1790415148045804943}
m_Layer: 5
m_Name: PipeParent
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -294,7 +294,7 @@ GameObject:
- component: {fileID: 1790415148045804991}
m_Layer: 5
m_Name: PipeCell7
m_TagString:
m_TagString: f
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

@ -0,0 +1,313 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1927895643555086930
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2774129595816172735}
- component: {fileID: 5747220029353983186}
m_Layer: 5
m_Name: Slider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2774129595816172735
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1927895643555086930}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 3.027968, y: 4.352704, z: 3.027968}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6330597749771692761}
- {fileID: 3897611399735621207}
- {fileID: 1933877722026752020}
m_Father: {fileID: 0}
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: -86.599976, y: 380.5201}
m_SizeDelta: {x: 160, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &5747220029353983186
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1927895643555086930}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 0}
m_FillRect: {fileID: 8128445396463516101}
m_HandleRect: {fileID: 0}
m_Direction: 0
m_MinValue: 0
m_MaxValue: 10
m_WholeNumbers: 0
m_Value: 5
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3157252535800401921
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3897611399735621207}
m_Layer: 5
m_Name: Fill Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3897611399735621207
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3157252535800401921}
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: 8128445396463516101}
m_Father: {fileID: 2774129595816172735}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: -5, y: 0}
m_SizeDelta: {x: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &4953687372900375909
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8128445396463516101}
- component: {fileID: 3214804828058033334}
- component: {fileID: 6197703238363308694}
m_Layer: 5
m_Name: Fill
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8128445396463516101
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4953687372900375909}
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: 3897611399735621207}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 10, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3214804828058033334
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4953687372900375909}
m_CullTransparentMesh: 1
--- !u!114 &6197703238363308694
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4953687372900375909}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8001395368816636490
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1933877722026752020}
m_Layer: 5
m_Name: Handle Slide Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1933877722026752020
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8001395368816636490}
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: 2774129595816172735}
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: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &8935844134969124222
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6330597749771692761}
- component: {fileID: 2602464901328125346}
- component: {fileID: 1235710956538413518}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6330597749771692761
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8935844134969124222}
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: 2774129595816172735}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2602464901328125346
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8935844134969124222}
m_CullTransparentMesh: 1
--- !u!114 &1235710956538413518
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8935844134969124222}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

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

@ -0,0 +1,15 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SliderManager : MonoBehaviour
{
public Slider Slider;
public void SetSliderValue()
{
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5db4362bf91691741afe2d26eafb5bbb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,253 @@
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;
using UnityEngine.UI;
using System;
public class instantiateprefab : MonoBehaviour
{
public GameObject prefab, panel;
public GameObject[] positionArray;
public Transform parentTf;
//public Text[] values;
// public int[] minValues;
// public int[] maxValues;
public List<LevelGroup> levelGroups;
public int minIndex = 0;
public int maxIndex = 8;
public int points;
public string Mode;
public string pointtext;
public AchievementManager manger;
public ScoreButton score;
public Button changeValueButton;
public GameManager gameManager;
private List<Slider> sliders = new List<Slider>();
public GamePlayManager gameplay;
public Slider sliderprefabalue, hintcheckvalue;
public string[] ModeNames;
public int value;
// public GameObject level;
public LevelGroupButton levelGroupButton;
public void Awake()
{
levelGroupButton=GetComponent<LevelGroupButton>();
}
void Start()
{
for (int i = 0; i < positionArray.Length; i++)
{
if (positionArray[i] != null)
{
InstantiateSlider(i, positionArray[i].transform.position);
}
}
InstantiateSSlider(positionArray.Length, new Vector3(0, -100, 0));
InstantiateSSlider(positionArray.Length + 1, new Vector3(0, -200, 0));
InstantiateSSlider(positionArray.Length + 2, new Vector3(0, -300, 0));
InstantiateSSlider(positionArray.Length + 3, new Vector3(0, -400, 0));
// Add listener to the button
changeValueButton.onClick.AddListener(ChangeSliderValueAtIndex7);
changeValueButton.onClick.AddListener(SliderValueAtIndex9);
changeValueButton.onClick.AddListener(ChangeSliderValueAtIndex8);
changeValueButton.onClick.AddListener(SliderValueAtIndex10);
}
private void InstantiateSlider(int index, Vector3 position)
{
GameObject sliderObject = Instantiate(prefab, position, Quaternion.identity, parentTf);
sliderObject.GetComponent<ScoreButton>().myIndex = index + 1;
foreach (Transform child in sliderObject.transform)
{
if (child.name == Mode)
{
Text levelname = child.GetComponent<Text>();
levelname.text = manger.AchievementList[index].DisplayName.ToString();
}
if (child.name == pointtext)
{
Text progress = child.GetComponent<Text>();
progress.text = manger.AchievementList[index].ProgressGoal + " / " + manger.AchievementList[index].ProgressSuffix.ToString();
}
}
Slider slider = sliderObject.GetComponent<Slider>();
if (slider != null)
{
slider.minValue = 0;
slider.maxValue = levelGroups[index].TotalLevel;
slider.value = levelGroups[index].CompletedLevel;
sliders.Add(slider); // Store the slider in the list
}
}
public void InstantiateSSlider(int index, Vector3 position)
{
GameObject sliderObject = Instantiate(prefab, position, Quaternion.identity, parentTf);
sliderObject.GetComponent<ScoreButton>().myIndex = index + 1;
// Assign a name to the slider object based on the achievement list or create a fallback for extra sliders
if (index < manger.AchievementList.Count)
{
string achievementName = manger.AchievementList[index].DisplayName.ToString();
sliderObject.name = "Slider - " + achievementName;
}
else
{
sliderObject.name = "Slider - Extra " + (index - manger.AchievementList.Count + 1);
}
// Set the Mode text for extra sliders
foreach (Transform child in sliderObject.transform)
{
if (child.name == Mode)
{
Text modeText = child.GetComponent<Text>();
if (modeText != null)
{
if (index < ModeNames.Length)
{
modeText.text = ModeNames[index];
}
else
{
modeText.text = "Extra Mode " + (index - ModeNames.Length + 1);
}
}
}
if (child.name == pointtext)
{
Text progress = child.GetComponent<Text>();
progress.text = (index < manger.AchievementList.Count) ?
manger.AchievementList[index].ProgressGoal + " / " + manger.AchievementList[index].ProgressSuffix.ToString() :
"0 / 10"; // Fallback for extra sliders
}
}
Slider slider = sliderObject.GetComponent<Slider>();
if (slider != null)
{
slider.minValue = 0;
slider.maxValue = (index < manger.AchievementList.Count) ? manger.AchievementList[index].ProgressGoal : 10;
// slider.value = (index < manger.AchievementList.Count) ? manger.AchievementList[index].ProgressCurrent : 0;
sliders.Add(slider); // Store the slider in the list
}
}
public void ChangeSliderValueAtIndex7()
{
if (sliders.Count > 6)
{
Slider sliderAtIndex7 = sliders[6];
sliderAtIndex7.value += 1;
sliderAtIndex7.maxValue = 10;
sliderAtIndex7.minValue = 0;
// Ensure the name of the slider at index 7 matches the AchievementList
}
}
public void ChangeSliderValueAtIndex8()
{
if (sliders.Count > 7)
{
Slider sliderAtIndex8 = sliders[7];
sliderAtIndex8.value += 1;
sliderAtIndex8.maxValue = 20;
sliderAtIndex8.minValue = 0;
}
}
public void Update()
{
SliderValueAtIndex9();
SliderValueAtIndex10();
for (int i = 0; i < sliders.Count; i++)
{
if (levelGroups[i].CompletedLevel == levelGroups[i].TotalLevel)
{
sliders[i].maxValue = levelGroups[i].TotalLevel;
// Increment the TotalLevel by 5 immediately
levelGroups[i].TotalLevel += 5;
score.completetargets += 1;
score.points += 50 *score.myIndex;
// score. targetText.text = "" + completetargets.ToString();
if (levelGroupButton != null)
{
levelGroupButton.UpdateUI();
}
}
}
}
public void SliderValueAtIndex9()
{
if (sliders.Count > 8)
{
Slider sliderAtIndex9 = sliders[8];
sliderAtIndex9.value = sliderprefabalue.value;
sliderAtIndex9.maxValue = 1000;
// score.completetargets = value;
}
}
public void SliderValueAtIndex10()
{
if (sliders.Count > 5)
{
Slider sliderAtIndex10 = sliders[5];
sliderAtIndex10.value = hintcheckvalue.value;
sliderAtIndex10.maxValue = 1000;
}
}
public void poppanel()
{
panel.SetActive(true);
}
public void MaxValueset()
{
if (sliders.Count > 7)
{
Slider sliderAtIndex8 = sliders[7];
sliderAtIndex8.maxValue = 20;
sliderAtIndex8.minValue = 0;
}
}
public void AchivementsetFalse()
{
panel.SetActive(false);
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6f1c97da24073924caf516deda1b2c95
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -13,10 +13,10 @@ MonoBehaviour:
m_Name: AdvanceLevelGroup
m_EditorClassIdentifier:
LevelGroupName: Advance
TotalLevel: 50
TotalLevel: 5
ResourcesFolderPath: Advance\
bgColor: {r: 1, g: 1, b: 1, a: 1}
StarXPReward: 4
NoOfHint: 5
NoOfHint: 8
LevelDetailBG: {fileID: 21300000, guid: c127e3f9b75644725ad804c4df314d36, type: 3}
LevelHeaderBG: {fileID: 21300000, guid: 1ebd849011bb4f469f7f6dbab74a1602, type: 3}

@ -13,10 +13,10 @@ MonoBehaviour:
m_Name: EasyLevelGroup
m_EditorClassIdentifier:
LevelGroupName: Easy
TotalLevel: 50
TotalLevel: 5
ResourcesFolderPath: Easy\
bgColor: {r: 1, g: 1, b: 1, a: 1}
StarXPReward: 2
NoOfHint: 3
NoOfHint: 1
LevelDetailBG: {fileID: 21300000, guid: c127e3f9b75644725ad804c4df314d36, type: 3}
LevelHeaderBG: {fileID: 21300000, guid: e8d41749b4cd4635a8cdc17885773761, type: 3}

@ -13,7 +13,7 @@ MonoBehaviour:
m_Name: ExpertLevelGroup
m_EditorClassIdentifier:
LevelGroupName: Expert
TotalLevel: 50
TotalLevel: 5
ResourcesFolderPath: Expert\
bgColor: {r: 1, g: 1, b: 1, a: 1}
StarXPReward: 5

@ -13,7 +13,7 @@ MonoBehaviour:
m_Name: HardLevelGroup
m_EditorClassIdentifier:
LevelGroupName: Hard
TotalLevel: 50
TotalLevel: 5
ResourcesFolderPath: Hard\
bgColor: {r: 1, g: 1, b: 1, a: 1}
StarXPReward: 3

@ -10,13 +10,13 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 85bdfd81ebecaf8513d1b5a5afe985ca, type: 3}
m_Name: MediumLevelGroup
m_Name: MediumLevelGroup 1
m_EditorClassIdentifier:
LevelGroupName: Medium
TotalLevel: 50
TotalLevel: 5
ResourcesFolderPath: Medium\
bgColor: {r: 1, g: 1, b: 1, a: 1}
StarXPReward: 2
NoOfHint: 4
NoOfHint: 1
LevelDetailBG: {fileID: 21300000, guid: c127e3f9b75644725ad804c4df314d36, type: 3}
LevelHeaderBG: {fileID: 21300000, guid: a256b28009444295a6e9fd35feea5f1a, type: 3}

@ -1,10 +1,8 @@
fileFormatVersion: 2
guid: d61999cc37d04360a3f0bf32267bf82a
timeCreated: 1613767609
licenseType: Free
guid: 46272a75089b90d44b27700883ff8da3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,120 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScoreButton : MonoBehaviour
{
public Slider slider;
public GameObject PointShowText, completeclaimbutton;
public int points, completetargets;
public Text pointText, targetText;
public instantiateprefab btn;
public LevelGroup levelgroup;
public Text progress;
public Text levelname;
public AchievementManager manager;
public int valus;
public int myIndex;
private bool pointsAwarded = false; // New flag to prevent repeated points addition
// Start is called before the first frame update
void Start()
{
points = PlayerPrefs.GetInt("Points", 0);
UpdateProgressText();
}
// Update is called once per frame
void Update()
{
UpdateProgressText();
// slider.maxValue = 5;
if (slider.value == slider.maxValue && !pointsAwarded)
{
PointShowText.SetActive(true);
completeclaimbutton.SetActive(false);
if (slider.maxValue < 50)
{
points += 50 * myIndex;
completetargets += 1;
targetText.text = "" + completetargets.ToString();
SavePoints();
// slider.maxValue += 5;
if (myIndex != 7&&myIndex!=8)
{
slider.maxValue += 5;
// pointsAwarded = true;
}
pointsAwarded = true;
UpdateProgressText();
}
}
else if (slider.value >= 5 && slider.value < slider.maxValue)
{
PointShowText.SetActive(true);
// completeclaimbutton.SetActive(false);
pointsAwarded = false;
}
else
{
PointShowText.SetActive(false);
points = 0;
}
if (points == 0)
{
PointShowText.SetActive(false);
completeclaimbutton.SetActive(true);
}
}
void UpdateProgressText()
{
progress.text = slider.value + "/" + slider.maxValue.ToString();
pointText.text = "Claim " + points.ToString();
}
public void CollectScore()
{
points = 0;
SavePoints();
pointText.text = "claim " + points.ToString();
}
void SavePoints()
{
PlayerPrefs.SetInt("Points", points );
PlayerPrefs.Save();
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6fcc3ce2bd2b2084abde38e988ba1236
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -4,7 +4,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
public class AdsManager : MonoBehaviour
{
//test ad units

@ -22,6 +22,7 @@ using UnityEngine.UI;
public class GamePlayManager : MonoBehaviour
{
public Slider slider,hintslider;
public List<Cell> _cellPrefab;
public Popup menuPopup;
@ -52,6 +53,7 @@ public class GamePlayManager : MonoBehaviour
public LevelGroup[] levelGroups;
public static GamePlayManager instance;
public GameScene boolcheck;
[HideInInspector]
public List<Cell> allCellList;
@ -89,23 +91,36 @@ public class GamePlayManager : MonoBehaviour
private float _levelContainerMaxHeight;
private Vector3 _levelContainerPosition;
public GameObject levepopup;
private bool isRotating;
public instantiateprefab prefeb;
public ScoreButton pointadd;
public int valas;
private void Awake()
{
instance = this;
prefeb = FindObjectOfType<instantiateprefab>();
boolcheck = FindObjectOfType<GameScene>();
pointadd = FindObjectOfType<ScoreButton>(); // Automatically find the instance
}
private void Start()
{
rootCanvas = base.transform.parent.GetComponent<RectTransform>();
_levelContainerMaxHeight = _levelContainer.rect.height;
_levelContainerPosition = _levelContainer.localPosition;
SetupLevel();
}
private void Start()
{
rootCanvas = base.transform.parent.GetComponent<RectTransform>();
_levelContainerMaxHeight = _levelContainer.rect.height;
_levelContainerPosition = _levelContainer.localPosition;
SetupLevel();
private void ShowMessagePopup()
// Load saved slider values
float savedSliderValue = PlayerPrefs.GetFloat("SliderValue", 0); // Default value is 0 if key doesn't exist
slider.value = savedSliderValue;
// Load saved hintslider value
float savedHintSliderValue = PlayerPrefs.GetFloat("HintSliderValue", 0); // Default value is 0 if key doesn't exist
hintslider.value = savedHintSliderValue;
}
private void ShowMessagePopup()
{
int messagePopupIndex = GameManager.currentLevel.messagePopupIndex;
if (messagePopupIndex != -1)
@ -187,17 +202,28 @@ public class GamePlayManager : MonoBehaviour
}
public void OnButtonClick(Cell c)
{
if (!isRotating && !isGameOver)
{
undoList.Add(new UndoAction(c, c.RotationValue));
c.RotationValue++;
StartCoroutine(RotatePipe(c));
}
}
public void OnButtonClick(Cell c)
{
if (!isRotating && !isGameOver)
{
undoList.Add(new UndoAction(c, c.RotationValue));
c.RotationValue++;
UnityEngine.Debug.Log("saving value");
slider.value += 1;
// Save the slider value to PlayerPrefs
PlayerPrefs.SetFloat("SliderValue", slider.value);
PlayerPrefs.Save(); // Make sure to call Save() to persist changes
// Update the slider value in instantiateprefab
public void Undo()
StartCoroutine(RotatePipe(c));
}
}
public void Undo()
{
if (!isRotating && undoList != null && undoList.Count != 0)
{
@ -327,7 +353,7 @@ public class GamePlayManager : MonoBehaviour
}
if (cell2.pipes.Count > 1)
{
if (cell2.pipes[1].L)
if (cell2.pipes[1].L)
{
cell.pipes[0].RightLeak = false;
cell.pipes[0].Img_1.gameObject.SetActive(false);
@ -356,6 +382,7 @@ public class GamePlayManager : MonoBehaviour
if (list != null && list.Count > 0)
{
list[UnityEngine.Random.Range(0, list.Count)].IsHint = true;
boolcheck.hintcheck = true;
}
}
StartCoroutine(RotatePipe(null));
@ -513,13 +540,16 @@ public class GamePlayManager : MonoBehaviour
Toast.instance.ShowMessage("You don't have enough coins");
return;
}
GameManager.Coin -= GameConfig.instance.numCoinForSkipGame;
GameManager.currentLevelGroup.SetLevelCompleted(GameManager.CurrentLevelNo, Time.time - startTime);
}
menuPopup.Close();
menuPopup.Close();
Sound.instance.PlayButton();
if (GameManager.currentLevelGroup.TotalLevel > GameManager.CurrentLevelNo)
{
Timer.Schedule(this, 0.8f, delegate
{
GameManager.CurrentLevelNo++;
@ -531,4 +561,23 @@ public class GamePlayManager : MonoBehaviour
GameScene.instance.OnBackBtn();
}
}
public void HintCheck()
{
if (boolcheck.hintcheck == true)
{
Debug.Log("hint check");
hintslider.value += 1;
valas += 1;
// Save the hintslider value to PlayerPrefs
PlayerPrefs.SetFloat("HintSliderValue", hintslider.value);
PlayerPrefs.Save(); // Make sure to call Save() to persist changes
boolcheck.hintcheck = false;
}
}
public void levelpopup()
{
levepopup.SetActive(true);
}
}

@ -41,6 +41,7 @@ public class GameScene : MonoBehaviour
public TMP_Text skipCoinValueText;
public static GameScene instance;
public bool hintcheck = false;
private void Start()
{
@ -67,7 +68,7 @@ public class GameScene : MonoBehaviour
{
Sound.instance.PlayButton(Sound.Button.Back);
GameManager.openLevelSelection = true;
SceneManager.LoadScene("HomeScene");
SceneManager.LoadScene("HomeScene1");
}
}
@ -94,7 +95,7 @@ public class GameScene : MonoBehaviour
if (!GamePlayManager.instance.isGameOver || GamePlayManager.instance.closeGameOver)
{
Sound.instance.PlayButton();
SceneManager.LoadScene("HomeScene");
SceneManager.LoadScene("HomeScene1");
}
}
@ -120,9 +121,16 @@ public class GameScene : MonoBehaviour
return;
}
}
Sound.instance.PlayButton();
//if (GameManager.Coin < GameConfig.instance.numCoinForHint)
//{
// Toast.instance.ShowMessage("You don't have enough coins");
// return;
//}
GameManager.Coin -= GameConfig.instance.numCoinForHint;
UpdateUI();
GamePlayManager.instance.GiveHint();
//hintcheck = true;
}
}
@ -153,4 +161,8 @@ public class GameScene : MonoBehaviour
{
Sound.instance.PlayButton(Sound.Button.Back);
}
public void back()
{
SceneManager.LoadScene(0);
}
}

@ -19,7 +19,8 @@ public class LevelGroup : ScriptableObject
{
public string LevelGroupName = "Easy";
public int TotalLevel = 50;
public int TotalLevel = 5;
public string ResourcesFolderPath = "Easy\\";
@ -32,6 +33,7 @@ public class LevelGroup : ScriptableObject
public Sprite LevelDetailBG;
public Sprite LevelHeaderBG;
public int CompletedLevel
{

@ -1,54 +1,53 @@
/*
http://www.cgsoso.com/forum-211-1.html
CG Unity3d Unity3d VIP
CGSOSO CG
daily assets update for try.
U should buy the asset from home store if u use it in your project!
*/
using MS;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using System;
[ExecuteInEditMode]
public class LevelGroupButton : MonoBehaviour
{
public LevelGroup levelGroup;
public TMP_Text TitleLbl;
public TMP_Text LevelCompletdLbl;
public GameObject AwardGoldImage;
private void Start()
{
UpdateUI();
GetComponent<Button>().onClick.AddListener(delegate
{
HomeScene.instance.ShowDetailLevel(this);
HomeScene.instance.PlayButton();
GameObject.FindWithTag("LevelGroupPopup").GetComponent<Popup>().Close();
});
}
private void Update()
{
}
[ContextMenu("UpdateUI")]
public void UpdateUI()
{
base.name = levelGroup.LevelGroupName;
TitleLbl.text = base.name.ToUpper();
LevelCompletdLbl.text = levelGroup.CompletedLevel + " / " + levelGroup.TotalLevel;
AwardGoldImage.GetComponent<_2dxFX_GrayScale>().enabled = !(levelGroup.CompletedLevel >= levelGroup.TotalLevel);
}
}
public LevelGroup levelGroup;
// Use TMP_Text instead of Text
public TMP_Text TitleLbl;
public TMP_Text LevelCompletdLbl;
public GameObject AwardGoldImage;
public int TotalLevelsCompleted;
private void Start()
{
UpdateUI();
GetComponent<Button>().onClick.AddListener(delegate
{
HomeScene.instance.ShowDetailLevel(this);
HomeScene.instance.PlayButton();
GameObject.FindWithTag("LevelGroupPopup").GetComponent<Popup>().Close();
});
}
private void Update()
{
UpdateUI(); // If more logic is needed, add it here
}
[ContextMenu("UpdateUI")]
public void UpdateUI()
{
base.name = levelGroup.LevelGroupName;
TitleLbl.text = base.name.ToUpper();
LevelCompletdLbl.text = levelGroup.CompletedLevel + " / " + levelGroup.TotalLevel;
// Decide between SetActive or using _2dxFX_GrayScale
if (levelGroup.CompletedLevel >= 5)
{
AwardGoldImage.SetActive(true); // Show award if completed levels >= 5
}
else
{
AwardGoldImage.GetComponent<_2dxFX_GrayScale>().enabled = !(levelGroup.CompletedLevel >= levelGroup.TotalLevel);
}
TotalLevelsCompleted = levelGroup.CompletedLevel;
}
}

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

File diff suppressed because it is too large Load Diff

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

@ -0,0 +1,152 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &848739300060745012
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4385550723351327410}
- component: {fileID: 16051867991214920}
- component: {fileID: 1820762587381449173}
- component: {fileID: 7059658853800109678}
m_Layer: 5
m_Name: GamePlayManager
m_TagString:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4385550723351327410
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 848739300060745012}
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}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 55}
m_SizeDelta: {x: 650, y: 850}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &16051867991214920
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 848739300060745012}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7d4d1386b58481ac8338b97496451549, type: 3}
m_Name:
m_EditorClassIdentifier:
slider: {fileID: 0}
_cellPrefab:
- {fileID: 1790415148045804981, guid: 4f7a5f448033b8e4c895a7d4fcb89e3e, type: 3}
- {fileID: 1790415148045804992, guid: 6fd6ed12f3e506d44b59ac7c04ffb652, type: 3}
- {fileID: 1790415148045804987, guid: e1e6a2ae01498d64bb5a8a5f662a5a83, type: 3}
- {fileID: 1790415148045804970, guid: 395d0938f3a0de04e99c121991bfa456, type: 3}
- {fileID: 1790415148045804983, guid: 0bfae999f7498cb488d90842a67d7531, type: 3}
- {fileID: 1790415148045804967, guid: 4844be682b725e3458537eb4540d92ef, type: 3}
- {fileID: 1790415148045804986, guid: 47fadc98e0ee9cf40bcd01477e1fc6d3, type: 3}
- {fileID: 1790415148045804980, guid: 5f338f4bcc2ac7e438ef280b1357749e, type: 3}
menuPopup: {fileID: 0}
gameOverPopup: {fileID: 0}
starLevel: {fileID: 0}
nextBtn: {fileID: 0}
closeBtn: {fileID: 0}
fillBar: {fileID: 0}
goParticle: {fileID: 0}
_levelContainer: {fileID: 4385550723351327410}
_space: 0
levelGroups:
- {fileID: 11400000, guid: 3cdd9d8df70f43d5ae2246b73451a8bf, type: 2}
- {fileID: 11400000, guid: 46272a75089b90d44b27700883ff8da3, type: 2}
- {fileID: 11400000, guid: d606e6845dd447e2bf40638facbc7c7e, type: 2}
- {fileID: 11400000, guid: e5f4032f73074b45aa468e2ecf71f81c, type: 2}
- {fileID: 11400000, guid: cf6a4a494d684237bcf9ce01e1ac77ae, type: 2}
allCellList:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
startCellList:
- {fileID: 0}
- {fileID: 0}
midCellList: []
endCellList: []
visibleCellList: []
isGameOver: 0
closeGameOver: 0
row: 0
column: 0
prefeb: {fileID: 3103223411245280076, guid: a839d31fd6b8ca7409802d7859982b69, type: 3}
--- !u!222 &1820762587381449173
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 848739300060745012}
m_CullTransparentMesh: 1
--- !u!114 &7059658853800109678
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 848739300060745012}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.066}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

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

@ -0,0 +1,75 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4896978051067287224
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3708013770098244478}
- component: {fileID: 3103223411245280076}
m_Layer: 0
m_Name: InstantiatePrefabScript
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &3708013770098244478
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4896978051067287224}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.53219604, y: 1.5411571, z: 1659.634}
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 &3103223411245280076
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4896978051067287224}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6f1c97da24073924caf516deda1b2c95, type: 3}
m_Name:
m_EditorClassIdentifier:
prefab: {fileID: 0}
panel: {fileID: 0}
positionArray:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
parentTf: {fileID: 0}
values: []
minValues:
maxValues:
levelGroups:
- {fileID: 11400000, guid: 3cdd9d8df70f43d5ae2246b73451a8bf, type: 2}
- {fileID: 11400000, guid: d606e6845dd447e2bf40638facbc7c7e, type: 2}
- {fileID: 11400000, guid: cf6a4a494d684237bcf9ce01e1ac77ae, type: 2}
- {fileID: 11400000, guid: e5f4032f73074b45aa468e2ecf71f81c, type: 2}
- {fileID: 11400000, guid: cf6a4a494d684237bcf9ce01e1ac77ae, type: 2}
minIndex: 0
maxIndex: 4
points: 0
Mode: mode
pointtext: progressText
manger: {fileID: 0}
score: {fileID: -399046894741779023, guid: 4c5a0e11d618d694489eb3e8da227f72, type: 3}
changeValueButton: {fileID: 0}
gameplay: {fileID: 16051867991214920, guid: 102ee8df0bf8fad48bef341487481007, type: 3}

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

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

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

@ -0,0 +1,389 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &135218459640954282
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2167499935773084719}
m_Layer: 5
m_Name: Handle Slide Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2167499935773084719
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 135218459640954282}
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: 2607480151288909695}
m_Father: {fileID: 6746674346335426683}
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: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &449409752519791933
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 99830146067753176}
- component: {fileID: 5196723517483220098}
- component: {fileID: 7178744187175688649}
m_Layer: 5
m_Name: Fill
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &99830146067753176
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 449409752519791933}
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: 652778455579645372}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 10, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5196723517483220098
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 449409752519791933}
m_CullTransparentMesh: 1
--- !u!114 &7178744187175688649
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 449409752519791933}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &1296434722578354235
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 652778455579645372}
m_Layer: 5
m_Name: Fill Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &652778455579645372
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1296434722578354235}
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: 99830146067753176}
m_Father: {fileID: 6746674346335426683}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: -5, y: 0}
m_SizeDelta: {x: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2895443744164446780
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2607480151288909695}
- component: {fileID: 3311012767658700401}
- component: {fileID: 1074664156797272334}
m_Layer: 5
m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2607480151288909695
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2895443744164446780}
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: 2167499935773084719}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3311012767658700401
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2895443744164446780}
m_CullTransparentMesh: 1
--- !u!114 &1074664156797272334
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2895443744164446780}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &5871698421323775822
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 271856203728411820}
- component: {fileID: 6326904602184955982}
- component: {fileID: 8102569241170635733}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &271856203728411820
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5871698421323775822}
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: 6746674346335426683}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6326904602184955982
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5871698421323775822}
m_CullTransparentMesh: 1
--- !u!114 &8102569241170635733
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5871698421323775822}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &6285254072296839520
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6746674346335426683}
- component: {fileID: 1051964499492098825}
m_Layer: 5
m_Name: hintslidervalue
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6746674346335426683
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6285254072296839520}
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: 271856203728411820}
- {fileID: 652778455579645372}
- {fileID: 2167499935773084719}
m_Father: {fileID: 0}
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: -4, y: -309}
m_SizeDelta: {x: 405, y: 110.05}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1051964499492098825
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6285254072296839520}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1074664156797272334}
m_FillRect: {fileID: 99830146067753176}
m_HandleRect: {fileID: 2607480151288909695}
m_Direction: 0
m_MinValue: 0
m_MaxValue: 100
m_WholeNumbers: 1
m_Value: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []

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

@ -0,0 +1,389 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2478491155267077364
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6645545333255345970}
- component: {fileID: 6298780508598877821}
- component: {fileID: 2079207337931315616}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6645545333255345970
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2478491155267077364}
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: 319237273700167103}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6298780508598877821
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2478491155267077364}
m_CullTransparentMesh: 1
--- !u!114 &2079207337931315616
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2478491155267077364}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3058597586189792496
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 319237273700167103}
- component: {fileID: 5885820980592021006}
m_Layer: 5
m_Name: piperotationValue
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &319237273700167103
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3058597586189792496}
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: 6645545333255345970}
- {fileID: 2080642766796092080}
- {fileID: 7187377535277370765}
m_Father: {fileID: 0}
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: 24, y: -169}
m_SizeDelta: {x: 440, y: 145.43}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &5885820980592021006
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3058597586189792496}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 3265110640012991992}
m_FillRect: {fileID: 3199069543244353410}
m_HandleRect: {fileID: 2777582929284410700}
m_Direction: 0
m_MinValue: 0
m_MaxValue: 1000
m_WholeNumbers: 1
m_Value: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3315553756479568848
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2777582929284410700}
- component: {fileID: 950175085875260154}
- component: {fileID: 3265110640012991992}
m_Layer: 5
m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2777582929284410700
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3315553756479568848}
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: 7187377535277370765}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &950175085875260154
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3315553756479568848}
m_CullTransparentMesh: 1
--- !u!114 &3265110640012991992
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3315553756479568848}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &5181995455046054059
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7187377535277370765}
m_Layer: 5
m_Name: Handle Slide Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7187377535277370765
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5181995455046054059}
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: 2777582929284410700}
m_Father: {fileID: 319237273700167103}
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: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &6783748264621451765
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2080642766796092080}
m_Layer: 5
m_Name: Fill Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2080642766796092080
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6783748264621451765}
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: 3199069543244353410}
m_Father: {fileID: 319237273700167103}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: -5, y: 0}
m_SizeDelta: {x: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &6969912674905073605
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3199069543244353410}
- component: {fileID: 7531866946379122767}
- component: {fileID: 975991179855790370}
m_Layer: 5
m_Name: Fill
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3199069543244353410
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6969912674905073605}
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: 2080642766796092080}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 10, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7531866946379122767
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6969912674905073605}
m_CullTransparentMesh: 1
--- !u!114 &975991179855790370
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6969912674905073605}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

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

@ -0,0 +1,20 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class uislider : MonoBehaviour
{
public Slider slider;
// Start is called before the first frame update
void Start()
{
slider.minValue = 0f;
slider.maxValue = 3f;
}
// Update is called once per frame
void Update()
{
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fda5f1b2e8d2f1e4babffbbcb053ec7e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -1,10 +1,12 @@
{
"dependencies": {
"com.unity.2d.sprite": "1.0.0",
"com.unity.ai.navigation": "1.1.5",
"com.unity.ide.rider": "3.0.31",
"com.unity.ide.visualstudio": "2.0.22",
"com.unity.ide.vscode": "1.2.5",
"com.unity.recorder": "4.0.3",
"com.unity.textmeshpro": "3.0.9",
"com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.9",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",

@ -6,6 +6,15 @@
"source": "builtin",
"dependencies": {}
},
"com.unity.ai.navigation": {
"version": "1.1.5",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.ai": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.ext.nunit": {
"version": "1.0.6",
"depth": 1,
@ -31,13 +40,31 @@
},
"url": "https://packages.unity.com"
},
"com.unity.ide.vscode": {
"version": "1.2.5",
"com.unity.recorder": {
"version": "4.0.3",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.timeline": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.sysroot": {
"version": "2.0.10",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.sysroot.linux-x86_64": {
"version": "2.0.9",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.sysroot": "2.0.10"
},
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.1.33",
"depth": 1,
@ -58,6 +85,28 @@
},
"url": "https://packages.unity.com"
},
"com.unity.timeline": {
"version": "1.7.6",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.toolchain.win-x86_64-linux-x86_64": {
"version": "2.0.9",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.sysroot": "2.0.10",
"com.unity.sysroot.linux-x86_64": "2.0.9"
},
"url": "https://packages.unity.com"
},
"com.unity.ugui": {
"version": "1.0.0",
"depth": 1,

@ -6,8 +6,8 @@ EditorBuildSettings:
serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/PipeOut/Scenes/HomeScene.unity
guid: 4dd7b23419e364348ae5e5bfc89c5d66
path: Assets/HomeScene 1.unity
guid: 6457a9685a6c36e418d73cb6b0d0129b
- enabled: 1
path: Assets/PipeOut/Scenes/GameScene.unity
guid: 8775cd7935277614c91b5ab720bef4da

@ -6,6 +6,7 @@ TagManager:
tags:
- OverlayDialog
- LevelGroupPopup
- f
layers:
- Default
- TransparentFX
@ -40,6 +41,6 @@ TagManager:
-
-
m_SortingLayers:
- name: "Default"
- name: Default
uniqueID: 0
locked: 0

Loading…
Cancel
Save