씬 재로딩시 crewmate 리스폰 추가 작업 중

This commit is contained in:
NTG_Lenovo 2023-10-24 16:27:11 +09:00
parent 2a2f66f1e3
commit 397d0fe410
8 changed files with 87 additions and 6 deletions

View File

@ -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;

View File

@ -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<Crewmate> crewmateList;
}
}

View File

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

View File

@ -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: []

View File

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

View File

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;

View File

@ -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;
}
}

View File

@ -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<Crewmate> 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<SpawnController>();
foreach (var crewmate in currentCrewmateList)
{
spawnController.SetCrewmatePrefabIndex(crewmate.CrewmatePrefabIndex);
spawnController.AddCrewmate();
}
}
}
}