씬 재로딩시 crewmate 리스폰 추가 작업 중
This commit is contained in:
parent
2a2f66f1e3
commit
397d0fe410
@ -93,6 +93,8 @@ namespace BlueWaterProject
|
|||||||
[SerializeField] protected bool isAttacking;
|
[SerializeField] protected bool isAttacking;
|
||||||
|
|
||||||
// 일반 변수
|
// 일반 변수
|
||||||
|
public int CrewmatePrefabIndex { get; set; } = -1;
|
||||||
|
|
||||||
protected Vector2 movementInput;
|
protected Vector2 movementInput;
|
||||||
protected bool usedNormalAttackCoroutine;
|
protected bool usedNormalAttackCoroutine;
|
||||||
protected WaitForSeconds waitAtkCooldown;
|
protected WaitForSeconds waitAtkCooldown;
|
||||||
|
12
BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs
Normal file
12
BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
11
BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Data/CrewmateDataSo.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c04e61fd913bab44a834a1586e2ada3c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
15
BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset
Normal file
15
BlueWater/Assets/02.Scripts/Data/So/CrewmateData.asset
Normal 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: []
|
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1804f9de21fdf15448bb3a67d7b1c7c8
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Sirenix.OdinInspector;
|
using Sirenix.OdinInspector;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
@ -18,7 +18,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
[Title("Crewmate 생성")]
|
[Title("Crewmate 생성")]
|
||||||
[InfoBox("$CrewmateIndexInfoMessage")]
|
[InfoBox("$CrewmateIndexInfoMessage")]
|
||||||
[SerializeField] private int crewmateIndex;
|
[SerializeField] private int crewmatePrefabIndex;
|
||||||
|
|
||||||
private Collider[] colliders = new Collider[MAX_COLLIDER];
|
private Collider[] colliders = new Collider[MAX_COLLIDER];
|
||||||
|
|
||||||
@ -102,13 +102,13 @@ namespace BlueWaterProject
|
|||||||
GameManager.Inst.SetCurrentInIslandPlayer(inIslandPlayer);
|
GameManager.Inst.SetCurrentInIslandPlayer(inIslandPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
[DisableIf("@crewmateIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmateIndex < 0")]
|
[DisableIf("@crewmatePrefabIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmatePrefabIndex < 0")]
|
||||||
[Button("Crewmate 추가")]
|
[Button("Crewmate 추가")]
|
||||||
private void AddCrewmate()
|
public void AddCrewmate()
|
||||||
{
|
{
|
||||||
if (!GameManager.Inst.CurrentInIslandPlayer.GameObject) return;
|
if (!GameManager.Inst.CurrentInIslandPlayer.GameObject) return;
|
||||||
|
|
||||||
if (crewmateIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmateIndex < 0)
|
if (crewmatePrefabIndex >= GameManager.Inst.CrewmatePrefabList.Count || crewmatePrefabIndex < 0)
|
||||||
{
|
{
|
||||||
print("존재하지 않는 인덱스입니다.");
|
print("존재하지 않는 인덱스입니다.");
|
||||||
return;
|
return;
|
||||||
@ -124,8 +124,9 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
if (size != 0) continue;
|
if (size != 0) continue;
|
||||||
|
|
||||||
var crewmate = Instantiate(GameManager.Inst.CrewmatePrefabList[crewmateIndex], spawnPos,
|
var crewmate = Instantiate(GameManager.Inst.CrewmatePrefabList[crewmatePrefabIndex], spawnPos,
|
||||||
GameManager.Inst.CrewmatePrefabList[crewmateIndex].transform.rotation, spawnLocation);
|
GameManager.Inst.CrewmatePrefabList[crewmatePrefabIndex].transform.rotation, spawnLocation);
|
||||||
|
crewmate.CrewmatePrefabIndex = crewmatePrefabIndex;
|
||||||
crewmate.gameObject.SetActive(true);
|
crewmate.gameObject.SetActive(true);
|
||||||
|
|
||||||
GameManager.Inst.CurrentCrewmateList.Add(crewmate);
|
GameManager.Inst.CurrentCrewmateList.Add(crewmate);
|
||||||
@ -134,5 +135,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
print("소환할 수 있는 자리가 없습니다.");
|
print("소환할 수 있는 자리가 없습니다.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetCrewmatePrefabIndex(int value) => crewmatePrefabIndex = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.InputSystem;
|
using UnityEngine.InputSystem;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
@ -7,11 +8,39 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
public class RestartPopupUi : MonoBehaviour
|
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)
|
private void OnInteraction(InputValue value)
|
||||||
{
|
{
|
||||||
|
currentCrewmateList = GameManager.Inst.CurrentCrewmateList;
|
||||||
|
|
||||||
var currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
|
var currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
|
||||||
|
|
||||||
SceneManager.LoadScene(currentSceneIndex);
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user