From 397d0fe4100cecb21f28977ea82ec97d43364f96 Mon Sep 17 00:00:00 2001 From: NTG_Lenovo Date: Tue, 24 Oct 2023 16:27:11 +0900 Subject: [PATCH] =?UTF-8?q?=EC=94=AC=20=EC=9E=AC=EB=A1=9C=EB=94=A9?= =?UTF-8?q?=EC=8B=9C=20crewmate=20=EB=A6=AC=EC=8A=A4=ED=8F=B0=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EC=9E=91=EC=97=85=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../02.Scripts/Character/Crewmate/Crewmate.cs | 2 ++ .../Assets/02.Scripts/Data/CrewmateDataSo.cs | 12 ++++++++ .../02.Scripts/Data/CrewmateDataSo.cs.meta | 11 +++++++ .../02.Scripts/Data/So/CrewmateData.asset | 15 ++++++++++ .../Data/So/CrewmateData.asset.meta | 8 +++++ BlueWater/Assets/02.Scripts/GameManager.cs | 1 + .../Assets/02.Scripts/SpawnController.cs | 15 ++++++---- .../Assets/02.Scripts/Ui/RestartPopupUi.cs | 29 +++++++++++++++++++ 8 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs create mode 100644 BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs.meta create mode 100644 BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset create mode 100644 BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset.meta diff --git a/BlueWater/Assets/02.Scripts/Character/Crewmate/Crewmate.cs b/BlueWater/Assets/02.Scripts/Character/Crewmate/Crewmate.cs index ad4b89be6..880bbcdda 100644 --- a/BlueWater/Assets/02.Scripts/Character/Crewmate/Crewmate.cs +++ b/BlueWater/Assets/02.Scripts/Character/Crewmate/Crewmate.cs @@ -93,6 +93,8 @@ namespace BlueWaterProject [SerializeField] protected bool isAttacking; // 일반 변수 + public int CrewmatePrefabIndex { get; set; } = -1; + protected Vector2 movementInput; protected bool usedNormalAttackCoroutine; protected WaitForSeconds waitAtkCooldown; diff --git a/BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs b/BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs new file mode 100644 index 000000000..3603b38d5 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + [CreateAssetMenu(fileName = "CrewmateData", menuName = "ScriptableObjects/CrewmateData", order = 1)] + public class CrewmateDataSo : ScriptableObject + { + public List crewmateList; + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs.meta b/BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs.meta new file mode 100644 index 000000000..1b95acca2 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c04e61fd913bab44a834a1586e2ada3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset b/BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset new file mode 100644 index 000000000..8cad18ccc --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset @@ -0,0 +1,15 @@ +%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: c04e61fd913bab44a834a1586e2ada3c, type: 3} + m_Name: CrewmateData + m_EditorClassIdentifier: + crewmateList: [] diff --git a/BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset.meta b/BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset.meta new file mode 100644 index 000000000..13c0508d4 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1804f9de21fdf15448bb3a67d7b1c7c8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/GameManager.cs b/BlueWater/Assets/02.Scripts/GameManager.cs index 651f5ab6c..5294c796a 100644 --- a/BlueWater/Assets/02.Scripts/GameManager.cs +++ b/BlueWater/Assets/02.Scripts/GameManager.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; diff --git a/BlueWater/Assets/02.Scripts/SpawnController.cs b/BlueWater/Assets/02.Scripts/SpawnController.cs index a545db1f8..10a826e28 100644 --- a/BlueWater/Assets/02.Scripts/SpawnController.cs +++ b/BlueWater/Assets/02.Scripts/SpawnController.cs @@ -18,7 +18,7 @@ namespace BlueWaterProject [Title("Crewmate 생성")] [InfoBox("$CrewmateIndexInfoMessage")] - [SerializeField] private int crewmateIndex; + [SerializeField] private int crewmatePrefabIndex; private Collider[] colliders = new Collider[MAX_COLLIDER]; @@ -102,13 +102,13 @@ namespace BlueWaterProject GameManager.Inst.SetCurrentInIslandPlayer(inIslandPlayer); } - [DisableIf("@crewmateIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmateIndex < 0")] + [DisableIf("@crewmatePrefabIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmatePrefabIndex < 0")] [Button("Crewmate 추가")] - private void AddCrewmate() + public void AddCrewmate() { if (!GameManager.Inst.CurrentInIslandPlayer.GameObject) return; - if (crewmateIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmateIndex < 0) + if (crewmatePrefabIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmatePrefabIndex < 0) { print("존재하지 않는 인덱스입니다."); return; @@ -124,8 +124,9 @@ namespace BlueWaterProject if (size != 0) continue; - var crewmate = Instantiate(GameManager.Inst.CrewmatePrefabList[crewmateIndex], spawnPos, - GameManager.Inst.CrewmatePrefabList[crewmateIndex].transform.rotation, spawnLocation); + var crewmate = Instantiate(GameManager.Inst.CrewmatePrefabList[crewmatePrefabIndex], spawnPos, + GameManager.Inst.CrewmatePrefabList[crewmatePrefabIndex].transform.rotation, spawnLocation); + crewmate.CrewmatePrefabIndex = crewmatePrefabIndex; crewmate.gameObject.SetActive(true); GameManager.Inst.CurrentCrewmateList.Add(crewmate); @@ -134,5 +135,7 @@ namespace BlueWaterProject print("소환할 수 있는 자리가 없습니다."); } + + public void SetCrewmatePrefabIndex(int value) => crewmatePrefabIndex = value; } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ui/RestartPopupUi.cs b/BlueWater/Assets/02.Scripts/Ui/RestartPopupUi.cs index 4bd655a5f..62530ebfe 100644 --- a/BlueWater/Assets/02.Scripts/Ui/RestartPopupUi.cs +++ b/BlueWater/Assets/02.Scripts/Ui/RestartPopupUi.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.SceneManagement; @@ -7,11 +8,39 @@ namespace BlueWaterProject { public class RestartPopupUi : MonoBehaviour { + private List currentCrewmateList; + + private void OnEnable() + { + // 씬이 로드될 때마다 OnSceneLoaded 메서드를 호출합니다. + SceneManager.sceneLoaded += OnSceneLoaded; + } + + private void OnDisable() + { + // 이 오브젝트가 비활성화될 때 이벤트 핸들러를 제거합니다. + SceneManager.sceneLoaded -= OnSceneLoaded; + } + private void OnInteraction(InputValue value) { + currentCrewmateList = GameManager.Inst.CurrentCrewmateList; + var currentSceneIndex = SceneManager.GetActiveScene().buildIndex; SceneManager.LoadScene(currentSceneIndex); } + + private void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + // 로딩 이후에 실행되어야 하는 코드를 여기에 작성합니다. + var spawnController = FindAnyObjectByType(); + + foreach (var crewmate in currentCrewmateList) + { + spawnController.SetCrewmatePrefabIndex(crewmate.CrewmatePrefabIndex); + spawnController.AddCrewmate(); + } + } } } \ No newline at end of file