浏览代码

Refactored GameManager as SO

/AdsTesting
Ciro Continisio 4 年前
当前提交
577d1538
共有 19 个文件被更改,包括 111 次插入152 次删除
  1. 7
      Assets/Prefabs/GameManager.prefab
  2. 2
      Assets/Prefabs/GameplayCanvas.prefab
  3. 4
      Assets/Prefabs/Player.prefab
  4. 1
      Assets/Scenes/LoadingScene.unity
  5. 87
      Assets/Scenes/MainMenu.unity
  6. 7
      Assets/Scripts/GameplayUI.cs
  7. 7
      Assets/Scripts/Loading.cs
  8. 5
      Assets/Scripts/PlayerController.cs
  9. 2
      Assets/Scripts/GameManagerMB.cs.meta
  10. 8
      Assets/ScriptableObjects.meta
  11. 9
      Assets/Scripts/GameManagerMB.cs
  12. 41
      Assets/Scripts/GameManagerSO.cs
  13. 17
      Assets/ScriptableObjects/GameManager.asset
  14. 8
      Assets/ScriptableObjects/GameManager.asset.meta
  15. 40
      Assets/Scripts/GameManager.cs
  16. 18
      Assets/Scripts/UISetup.cs
  17. 0
      /Assets/Scripts/GameManagerSO.cs.meta
  18. 0
      /Assets/Scripts/GameManagerMB.cs.meta

7
Assets/Prefabs/GameManager.prefab


serializedVersion: 6
m_Component:
- component: {fileID: 7356380717090622123}
- component: {fileID: 7356380717090622122}
- component: {fileID: 4904791057697430903}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged

m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7356380717090622122
--- !u!114 &4904791057697430903
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9a82635b139e4af468b5fec0e262a853, type: 3}
m_Script: {fileID: 11500000, guid: df5f80bf31c15db4d8992ac31648a0f8, type: 3}
m_GameManager: {fileID: 11400000, guid: a9f6da264584558478e57f0d26b9befb, type: 2}

2
Assets/Prefabs/GameplayCanvas.prefab


m_Name:
m_EditorClassIdentifier:
m_ExitButton: {fileID: 7702242263277782301}
m_KeyIndicator: {fileID: 7702242263051669514}
m_GameManager: {fileID: 11400000, guid: a9f6da264584558478e57f0d26b9befb, type: 2}
--- !u!1 &7877503227642946891
GameObject:
m_ObjectHideFlags: 0

4
Assets/Prefabs/Player.prefab


m_EditorClassIdentifier:
m_MovementSpeed: 2.5
m_AnimatorController: {fileID: 214216475}
m_InputCollisionLayer:
serializedVersion: 2
m_Bits: 0
m_GameManager: {fileID: 11400000, guid: a9f6da264584558478e57f0d26b9befb, type: 2}
--- !u!1001 &1171686176522753923
PrefabInstance:
m_ObjectHideFlags: 0

1
Assets/Scenes/LoadingScene.unity


m_EditorClassIdentifier:
m_LoadingSlider: {fileID: 1880866496}
m_PlayButton: {fileID: 1956782723}
m_GameManager: {fileID: 11400000, guid: a9f6da264584558478e57f0d26b9befb, type: 2}
--- !u!1 &813797211
GameObject:
m_ObjectHideFlags: 0

87
Assets/Scenes/MainMenu.unity


m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1001 &431199130
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_RootOrder
value: 4
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalPosition.x
value: -3.3274033
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalPosition.y
value: -0.109148726
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalPosition.z
value: 2.552061
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622123, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7356380717090622125, guid: d8e9e493da0735346a9e17cf1b363eab,
type: 3}
propertyPath: m_Name
value: GameManager
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d8e9e493da0735346a9e17cf1b363eab, type: 3}
--- !u!1 &454594787
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 1140220494}
- component: {fileID: 1140220493}
- component: {fileID: 1140220492}
- component: {fileID: 1140220496}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged

m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &1140220496
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1140220491}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c2b2588ea3013ce4bba037f2ce4b22fe, type: 3}
m_Name:
m_EditorClassIdentifier:
m_StartButton: {fileID: 1893815542}
--- !u!1 &1265336762
GameObject:
m_ObjectHideFlags: 0

m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 0}
m_MethodName: StartGameplay
- m_Target: {fileID: 11400000, guid: a9f6da264584558478e57f0d26b9befb, type: 2}
m_MethodName: LoadNextLevel
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}

7
Assets/Scripts/GameplayUI.cs


[SerializeField]
private Image m_KeyIndicator;
[SerializeField]
private GameManagerSO m_GameManager;
m_ExitButton.onClick.AddListener(GameManager.ExitGameplay);
m_ExitButton.onClick.AddListener(m_GameManager.ExitGameplay);
m_ExitButton.onClick.RemoveListener(GameManager.ExitGameplay);
m_ExitButton.onClick.RemoveListener(m_GameManager.ExitGameplay);
}
}

7
Assets/Scripts/Loading.cs


[SerializeField]
private GameObject m_PlayButton;
[SerializeField]
private GameManagerSO m_GameManager;
m_SceneHandle = Addressables.DownloadDependenciesAsync("Level_0" + GameManager.s_CurrentLevel);
m_SceneHandle = Addressables.DownloadDependenciesAsync("Level_0" + m_GameManager.s_CurrentLevel);
m_SceneHandle.Completed += OnSceneLoaded;
}

public void GoToNextLevel()
{
Addressables.LoadSceneAsync("Level_0" + GameManager.s_CurrentLevel, UnityEngine.SceneManagement.LoadSceneMode.Single, true);
Addressables.LoadSceneAsync("Level_0" + m_GameManager.s_CurrentLevel, UnityEngine.SceneManagement.LoadSceneMode.Single, true);
}
private void Update()

5
Assets/Scripts/PlayerController.cs


[SerializeField]
private LayerMask m_InputCollisionLayer;
[SerializeField]
private GameManagerSO m_GameManager;
private bool m_HasKey = false;
private Rigidbody m_Rigidbody;

{
Debug.Log("Opened the door");
GameManager.LevelCompleted();
m_GameManager.LevelCompleted();
}
}
}

2
Assets/Scripts/GameManagerMB.cs.meta


fileFormatVersion: 2
guid: c2b2588ea3013ce4bba037f2ce4b22fe
guid: df5f80bf31c15db4d8992ac31648a0f8
MonoImporter:
externalObjects: {}
serializedVersion: 2

8
Assets/ScriptableObjects.meta


fileFormatVersion: 2
guid: 67daac2eb6d70c547a6061ea49ecfa32
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

9
Assets/Scripts/GameManagerMB.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManagerMB : MonoBehaviour
{
[SerializeField]
private GameManagerSO m_GameManager;
}

41
Assets/Scripts/GameManagerSO.cs


using UnityEngine;
using UnityEngine.AddressableAssets;
[CreateAssetMenu()]
public class GameManagerSO : ScriptableObject
{
public int s_CurrentLevel = 0;
public int s_MaxAvailableLevel = 4;
public int s_ActiveHat;
public void ExitGame()
{
s_CurrentLevel = 0;
}
public void LoadNextLevel()
{
// We are going to be using the Addressables API to manage our scene loading and unloading, the equivalent way on the UnityEngine.SceneManagement API is:
// SceneManager.LoadSceneAsync("LoadingScene", LoadSceneMode.Single);
// Scene loaded in Single mode, the previously loaded scenes will be disposed by the Addressables.
Addressables.LoadSceneAsync("LoadingScene", UnityEngine.SceneManagement.LoadSceneMode.Single, true);
}
public void LevelCompleted()
{
s_CurrentLevel++;
// Just to make sure we don't try to go beyond the allowed number of levels.
s_CurrentLevel = s_CurrentLevel % s_MaxAvailableLevel;
LoadNextLevel();
}
public void ExitGameplay()
{
Addressables.LoadSceneAsync("MainMenu", UnityEngine.SceneManagement.LoadSceneMode.Single, true);
}
}

17
Assets/ScriptableObjects/GameManager.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9a82635b139e4af468b5fec0e262a853, type: 3}
m_Name: GameManager
m_EditorClassIdentifier:
s_CurrentLevel: 0
s_MaxAvailableLevel: 4
s_ActiveHat: 0

8
Assets/ScriptableObjects/GameManager.asset.meta


fileFormatVersion: 2
guid: a9f6da264584558478e57f0d26b9befb
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

40
Assets/Scripts/GameManager.cs


using UnityEngine;
using UnityEngine.AddressableAssets;
public class GameManager : MonoBehaviour
{
public static int s_CurrentLevel = 0;
public static int s_MaxAvailableLevel = 4;
public static int s_ActiveHat;
public void ExitGame()
{
s_CurrentLevel = 0;
}
public static void LoadNextLevel()
{
// We are going to be using the Addressables API to manage our scene loading and unloading, the equivalent way on the UnityEngine.SceneManagement API is:
// SceneManager.LoadSceneAsync("LoadingScene", LoadSceneMode.Single);
// Scene loaded in Single mode, the previously loaded scenes will be disposed by the Addressables.
Addressables.LoadSceneAsync("LoadingScene", UnityEngine.SceneManagement.LoadSceneMode.Single, true);
}
public static void LevelCompleted()
{
s_CurrentLevel++;
// Just to make sure we don't try to go beyond the allowed number of levels.
s_CurrentLevel = s_CurrentLevel % s_MaxAvailableLevel;
LoadNextLevel();
}
public static void ExitGameplay()
{
Addressables.LoadSceneAsync("MainMenu", UnityEngine.SceneManagement.LoadSceneMode.Single, true);
}
}

18
Assets/Scripts/UISetup.cs


using UnityEngine;
using UnityEngine.UI;
public class UISetup : MonoBehaviour
{
[SerializeField]
private Button m_StartButton;
private void OnEnable()
{
m_StartButton.onClick.AddListener(GameManager.LoadNextLevel);
}
private void OnDisable()
{
m_StartButton.onClick.RemoveListener(GameManager.LoadNextLevel);
}
}

/Assets/Scripts/GameManager.cs.meta → /Assets/Scripts/GameManagerSO.cs.meta

/Assets/Scripts/UISetup.cs.meta → /Assets/Scripts/GameManagerMB.cs.meta

正在加载...
取消
保存