Add GameState and mixer snapshots

This commit is contained in:
Jens Pitkänen 2020-04-19 02:12:29 +03:00
parent 84539db065
commit 2eb12b1cd0
9 changed files with 282 additions and 24 deletions

View File

@ -1,5 +1,53 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!244 &-6119931374106344343
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 86b1dc2b2b693394caad6dfdf7d2acdd
m_EffectName: Attenuation
m_MixLevel: 6520c254fe97e8d4585afad68d351162
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!243 &-6009061206453669325
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Gameplay
m_AudioMixer: {fileID: 24100000}
m_GroupID: 01ed36fd4259f874d8e152aa9f5cbdb4
m_Children:
- {fileID: -267709887311468707}
- {fileID: -2967980135314984734}
- {fileID: 586271417499195193}
m_Volume: 3b873ffd7476b574ab79c605a05a50ff
m_Pitch: db09271ae0508dd4fab1979ce5ca6572
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: -6119931374106344343}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!245 &-3105936107480203619
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Playing
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: ac9cc10b0c59e3b4682dc5089372ae81
m_FloatValues:
3b873ffd7476b574ab79c605a05a50ff: 0
m_TransitionOverrides: {}
--- !u!243 &-2967980135314984734
AudioMixerGroupController:
m_ObjectHideFlags: 0
@ -19,6 +67,18 @@ AudioMixerGroupController:
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!245 &-815558828361742615
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: GameOver
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: dd433c999a0f1de4b8d7ae8353027f93
m_FloatValues:
3b873ffd7476b574ab79c605a05a50ff: -60
m_TransitionOverrides: {}
--- !u!243 &-267709887311468707
AudioMixerGroupController:
m_ObjectHideFlags: 0
@ -49,10 +109,13 @@ AudioMixerController:
m_MasterGroup: {fileID: 24300002}
m_Snapshots:
- {fileID: 24500006}
- {fileID: -3105936107480203619}
- {fileID: 7009156351606643568}
- {fileID: -815558828361742615}
m_StartSnapshot: {fileID: 24500006}
m_SuspendThreshold: -80
m_EnableSuspend: 1
m_UpdateMode: 0
m_UpdateMode: 1
m_ExposedParameters: []
m_AudioMixerGroupViews:
- guids:
@ -60,9 +123,10 @@ AudioMixerController:
- 1bdb8c14a13a7064e887fd8c05bd43e7
- ecc30646201221445ab5a1cd672c78d8
- 440e1443b72e9e449a0e30e04101552d
- 01ed36fd4259f874d8e152aa9f5cbdb4
name: View
m_CurrentViewIndex: 0
m_TargetSnapshot: {fileID: 24500006}
m_TargetSnapshot: {fileID: -3105936107480203619}
--- !u!243 &24300002
AudioMixerGroupController:
m_ObjectHideFlags: 0
@ -73,9 +137,7 @@ AudioMixerGroupController:
m_AudioMixer: {fileID: 24100000}
m_GroupID: cce571dfddcbc694fa5856a9866157f8
m_Children:
- {fileID: -267709887311468707}
- {fileID: -2967980135314984734}
- {fileID: 586271417499195193}
- {fileID: -6009061206453669325}
m_Volume: 1dc5725402baaca40b189e10927dfd5f
m_Pitch: 91120b7d67bf787459cb1cee82330d2f
m_Send: 00000000000000000000000000000000
@ -171,3 +233,16 @@ AudioMixerEffectController:
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!245 &7009156351606643568
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Paused
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: 99acc46f1b1d7c24b861966f8835044d
m_FloatValues:
fd01f6bdeaa870c4688fa6fcad7c3e41: 0
3b873ffd7476b574ab79c605a05a50ff: 0
m_TransitionOverrides: {}

View File

@ -123,6 +123,58 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &176857073
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 176857075}
- component: {fileID: 176857074}
m_Layer: 0
m_Name: Audio Master
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &176857074
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 176857073}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 499ed37d51869ba44bbe6f61ffe9688e, type: 3}
m_Name:
m_EditorClassIdentifier:
GameState: {fileID: 834592896}
Mixer: {fileID: 24100000, guid: 032de345950918c4e89684078c6a7213, type: 2}
PlayingSnapshot: {fileID: -3105936107480203619, guid: 032de345950918c4e89684078c6a7213,
type: 2}
PausedSnapshot: {fileID: 7009156351606643568, guid: 032de345950918c4e89684078c6a7213,
type: 2}
GameoverSnapshot: {fileID: -815558828361742615, guid: 032de345950918c4e89684078c6a7213,
type: 2}
TransitionDuration: 0.5
--- !u!4 &176857075
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 176857073}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &183132683
GameObject:
m_ObjectHideFlags: 0
@ -230,6 +282,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d53e1b3547ca29043b4a527f784da518, type: 3}
m_Name:
m_EditorClassIdentifier:
GameState: {fileID: 834592896}
DynamicLight: {fileID: 876239992}
BurnEffectSource: {fileID: 783793205}
GoodFuelAmount: 20
@ -628,6 +681,50 @@ Terrain:
m_GroupingID: 0
m_RenderingLayerMask: 1
m_AllowAutoConnect: 1
--- !u!1 &834592895
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 834592897}
- component: {fileID: 834592896}
m_Layer: 0
m_Name: Game State
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &834592896
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 834592895}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ea392b45677427546a64c81b04afbc11, type: 3}
m_Name:
m_EditorClassIdentifier:
Current: 0
--- !u!4 &834592897
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 834592895}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &876239990
GameObject:
m_ObjectHideFlags: 0
@ -1003,7 +1100,7 @@ Transform:
- {fileID: 1161135096}
- {fileID: 1545147752}
m_Father: {fileID: 0}
m_RootOrder: 2
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1849724584
GameObject:
@ -1275,7 +1372,7 @@ RectTransform:
- {fileID: 1364366412}
- {fileID: 1156509021}
m_Father: {fileID: 0}
m_RootOrder: 0
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@ -1594,7 +1691,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &5400695019531174117
PrefabInstance:
@ -1603,11 +1700,6 @@ PrefabInstance:
m_Modification:
m_TransformParent: {fileID: 1921606960}
m_Modifications:
- target: {fileID: 5400695020334462788, guid: 2cd64e49ad7ad1c4bb4a4264703d7915,
type: 3}
propertyPath: m_Alpha
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5400695020334462789, guid: 2cd64e49ad7ad1c4bb4a4264703d7915,
type: 3}
propertyPath: m_LocalPosition.x
@ -1713,6 +1805,11 @@ PrefabInstance:
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 5400695020334462791, guid: 2cd64e49ad7ad1c4bb4a4264703d7915,
type: 3}
propertyPath: GameState
value:
objectReference: {fileID: 834592896}
- target: {fileID: 5400695020334462842, guid: 2cd64e49ad7ad1c4bb4a4264703d7915,
type: 3}
propertyPath: m_Name
@ -1727,6 +1824,11 @@ PrefabInstance:
m_Modification:
m_TransformParent: {fileID: 1660514110}
m_Modifications:
- target: {fileID: 6125707630481988370, guid: 558201eae20fa5540a826edb23937665,
type: 3}
propertyPath: GameState
value:
objectReference: {fileID: 834592896}
- target: {fileID: 6125707630481988396, guid: 558201eae20fa5540a826edb23937665,
type: 3}
propertyPath: m_LocalPosition.x

View File

@ -0,0 +1,26 @@
using UnityEngine;
using UnityEngine.Audio;
public class AudioMaster : MonoBehaviour {
public GameState GameState;
public AudioMixer Mixer;
public AudioMixerSnapshot PlayingSnapshot;
public AudioMixerSnapshot PausedSnapshot;
public AudioMixerSnapshot GameoverSnapshot;
public float TransitionDuration;
void Update() {
float[] Weights = {
GameState.Current == State.Playing ? 1 : 0,
GameState.Current == State.Paused ? 1 : 0,
GameState.Current == State.GameOver ? 1 : 0,
};
AudioMixerSnapshot[] Snapshots = {
PlayingSnapshot,
PausedSnapshot,
GameoverSnapshot,
};
Mixer.TransitionToSnapshots(Snapshots, Weights, TransitionDuration);
}
}

View File

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

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour {
public GameState GameState;
public Transform BodyTransform;
public Transform HeadTransform;
@ -13,10 +14,7 @@ public class CameraController : MonoBehaviour {
}
private void Update() {
if (Menu.Paused) {
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
} else {
if (GameState.Current == State.Playing) {
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
@ -33,6 +31,9 @@ public class CameraController : MonoBehaviour {
Eulers.x = 270;
}
HeadTransform.localEulerAngles = Eulers;
} else {
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
}
}

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
public class Campfire : MonoBehaviour {
public GameState GameState;
public Light DynamicLight;
[Tooltip("This audiosource will play the clips to indicate that an object has been thrown in the fire.")]
public AudioSource BurnEffectSource;
@ -35,8 +36,12 @@ public class Campfire : MonoBehaviour {
RandomVariance = Mathf.Lerp(RandomVariance, NextRandomVariance, (Time.time - LastRandomVarianceChange) / RandomVarianceDuration);
Fuel -= Time.deltaTime;
DynamicLight.range = Mathf.Log(Fuel + 2f, 10) / 2f * FullRange + RandomVariance;
DynamicLight.range = Mathf.Log(Fuel + 1f, 10) / 2f * FullRange + RandomVariance;
DynamicLight.color = Color.Lerp(DynamicLight.color, Fuel < GoodFuelAmount ? TooLowFuelColor : EnoughFuelColor, 10f * Time.deltaTime);
if (Fuel <= 0) {
GameState.Current = State.GameOver;
}
}
private void OnCollisionEnter(Collision c) {

View File

@ -0,0 +1,27 @@
using UnityEngine;
[System.Serializable]
public enum State {
Playing,
Paused,
GameOver
}
public class GameState : MonoBehaviour {
public State Current = State.Playing;
private void Update() {
if (Input.GetKeyDown(KeyCode.Escape)) {
switch (Current) {
case State.Playing:
Current = State.Paused;
break;
case State.Paused:
Current = State.Playing;
break;
}
}
Time.timeScale = Mathf.Lerp(Time.timeScale, Current == State.Paused ? 0 : 1, 10f * Time.unscaledDeltaTime);
}
}

View File

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

View File

@ -2,9 +2,14 @@
[RequireComponent(typeof(CanvasGroup))]
public class PauseMenu : MonoBehaviour {
public bool Paused = false;
public GameState GameState;
private CanvasGroup Canvas;
private bool Paused {
get {
return GameState.Current == State.Paused;
}
}
private void Awake() {
Canvas = GetComponent<CanvasGroup>();
@ -12,11 +17,6 @@ public class PauseMenu : MonoBehaviour {
}
private void Update() {
if (Input.GetKeyDown(KeyCode.Escape)) {
Paused = !Paused;
}
Time.timeScale = Mathf.Lerp(Time.timeScale, Paused ? 0 : 1, 10f * Time.unscaledDeltaTime);
Canvas.alpha = Mathf.Lerp(Canvas.alpha, Paused ? 1 : 0, 10f * Time.unscaledDeltaTime);
}
}