#28 유닛 생성 방식 변경 중2

This commit is contained in:
NTG_Lenovo 2023-08-30 11:10:16 +09:00
parent ea170ca058
commit 4ed3453f3b
8 changed files with 272 additions and 143 deletions

View File

@ -2041,6 +2041,37 @@ MonoBehaviour:
groundLayer:
serializedVersion: 2
m_Bits: 8
--- !u!1 &285433280
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 285433281}
m_Layer: 0
m_Name: PlayerUnits
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &285433281
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 285433280}
serializedVersion: 2
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &298893684
PrefabInstance:
m_ObjectHideFlags: 0
@ -9556,6 +9587,7 @@ MonoBehaviour:
<AiStat>k__BackingField:
<Idx>k__BackingField:
<ViewIdx>k__BackingField:
<AiType>k__BackingField: -1
<MaxHp>k__BackingField: 0
<CurrentHp>k__BackingField: 0
<Atk>k__BackingField: 0
@ -9567,6 +9599,8 @@ MonoBehaviour:
<AvoidanceRate>k__BackingField: 0
<UsingShield>k__BackingField: 0
<PenetrationResistivity>k__BackingField: 0
<UsingBow>k__BackingField: 0
<Inaccuracy>k__BackingField: 0
--- !u!208 &1514637408
NavMeshObstacle:
m_ObjectHideFlags: 0
@ -9754,6 +9788,7 @@ MonoBehaviour:
<AiStat>k__BackingField:
<Idx>k__BackingField:
<ViewIdx>k__BackingField:
<AiType>k__BackingField: -1
<MaxHp>k__BackingField: 0
<CurrentHp>k__BackingField: 0
<Atk>k__BackingField: 0
@ -9765,6 +9800,8 @@ MonoBehaviour:
<AvoidanceRate>k__BackingField: 0
<UsingShield>k__BackingField: 0
<PenetrationResistivity>k__BackingField: 0
<UsingBow>k__BackingField: 0
<Inaccuracy>k__BackingField: 0
--- !u!208 &1545632334
NavMeshObstacle:
m_ObjectHideFlags: 0
@ -12778,3 +12815,4 @@ SceneRoots:
- {fileID: 1332541640}
- {fileID: 979588904}
- {fileID: 1877670855}
- {fileID: 285433281}

View File

@ -116,54 +116,12 @@ namespace BlueWaterProject
protected virtual void Awake()
{
FindMaterial();
backpackContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Backpack_container"));
leftWeaponContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 L Clavicle/Bip001 L UpperArm/Bip001 L Forearm/Bip001 L Hand/L_hand_container"));
leftShieldContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 L Clavicle/Bip001 L UpperArm/Bip001 L Forearm/Bip001 L Hand/L_shield_container"));
headContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 Neck/Bip001 Head/Head_container"));
rightWeaponContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/R_hand_container"));
bodyContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Body_container"));
flagContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Flag_container"));
aiAnimator = Utils.GetComponentAndAssert<Animator>(transform);
navMeshAgent = Utils.GetComponentAndAssert<NavMeshAgent>(transform);
myUnitController = Utils.GetComponentAndAssert<UnitController>(transform.parent);
myCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform);
hitBoxCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform.Find("HitBox"));
unitSelection = FindObjectOfType<UnitSelection>();
InitComponent();
}
private void Start()
{
switch (AiStat.AiType)
{
case AiType.NONE:
break;
case AiType.PLAYER:
gameObject.layer = LayerMask.NameToLayer("Player");
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Player");
break;
case AiType.PIRATE:
gameObject.layer = LayerMask.NameToLayer("Pirate");
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Pirate");
break;
case AiType.ENEMY:
gameObject.layer = LayerMask.NameToLayer("Enemy");
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Enemy");
break;
default:
throw new ArgumentOutOfRangeException();
}
InitViewModel();
SetCurrentHp(AiStat.MaxHp);
SetMoveSpeed(AiStat.MoveSpd);
InitStart();
switch (attackerType)
{
@ -509,7 +467,40 @@ namespace BlueWaterProject
#region Custom function
public void InitViewModel()
private void InitComponent()
{
backpackContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Backpack_container"));
leftWeaponContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 L Clavicle/Bip001 L UpperArm/Bip001 L Forearm/Bip001 L Hand/L_hand_container"));
leftShieldContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 L Clavicle/Bip001 L UpperArm/Bip001 L Forearm/Bip001 L Hand/L_shield_container"));
headContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 Neck/Bip001 Head/Head_container"));
rightWeaponContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/R_hand_container"));
bodyContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Body_container"));
flagContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Flag_container"));
aiAnimator = Utils.GetComponentAndAssert<Animator>(transform);
navMeshAgent = Utils.GetComponentAndAssert<NavMeshAgent>(transform);
myUnitController = Utils.GetComponentAndAssert<UnitController>(transform.parent);
myCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform);
hitBoxCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform.Find("HitBox"));
unitSelection = FindObjectOfType<UnitSelection>();
}
private void InitStart()
{
InitViewModel();
SetLayer();
SetCurrentHp(AiStat.MaxHp);
SetMoveSpeed(AiStat.MoveSpd);
}
private void InitViewModel()
{
SetActiveViewModel(backpackContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).Backpack);
SetActiveViewModel(leftWeaponContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).LeftWeapon);
@ -526,6 +517,34 @@ namespace BlueWaterProject
closeWeapon.SetAttackerType(attackerType);
}
#if UNITY_EDITOR
public void InitStartInEditor()
{
InitComponent();
InitViewModelInEditor();
SetLayer();
SetCurrentHp(AiStat.MaxHp);
SetMoveSpeed(AiStat.MoveSpd);
}
public void InitViewModelInEditor()
{
SetActiveViewModel(backpackContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Backpack);
SetActiveViewModel(leftWeaponContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).LeftWeapon);
SetActiveViewModel(leftShieldContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).LeftShield);
SetActiveViewModel(headContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Head);
SetActiveViewModel(rightWeaponContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).RightWeapon);
SetActiveViewModel(bodyContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Body);
SetActiveViewModel(flagContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Flag);
if (DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).RightWeapon == -1) return;
closeWeapon = rightWeaponContainer.GetChild(DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).RightWeapon).AddComponent<CloseWeapon>();
closeWeapon.gameObject.layer = LayerMask.NameToLayer("Weapon");
closeWeapon.SetAttackerType(attackerType);
}
#endif
private void SetActiveViewModel(Transform container, int model)
{
foreach (Transform item in container)
@ -631,6 +650,32 @@ namespace BlueWaterProject
}
}
protected virtual void SetLayer()
{
switch (AiStat.AiType)
{
case AiType.NONE:
break;
case AiType.PLAYER:
gameObject.layer = LayerMask.NameToLayer("Player");
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Player");
TargetLayer = LayerMask.GetMask("Enemy");
break;
case AiType.PIRATE:
gameObject.layer = LayerMask.NameToLayer("Pirate");
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Pirate");
TargetLayer = LayerMask.GetMask("Enemy");
break;
case AiType.ENEMY:
gameObject.layer = LayerMask.NameToLayer("Enemy");
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Enemy");
TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate") | LayerMask.GetMask("Props");
break;
default:
throw new ArgumentOutOfRangeException();
}
}
public void SetAttackerType(AttackerType type) => attackerType = type;
public void SetOffenseType(OffenseType type) => offenseType = type;
public void SetDefenseType(DefenseType type) => defenseType = type;

View File

@ -29,11 +29,12 @@ namespace BlueWaterProject
[field: Tooltip("선원의 수")]
[field: Range(0, GlobalValue.ONE_UNIT_CAPACITY - 1)]
[field: SerializeField] public int SailorCount { get; set; }
//[field: ShowIf("AttackerType", AttackerType.OFFENSE)]
[field: DisableIf("@true")]
[field: SerializeField] public AttackerType AttackerType { get; set; }
[field: SerializeField] public OffenseType OffenseType { get; set; }
//[field: ShowIf("AttackerType", AttackerType.DEFENSE)]
[field: SerializeField] public DefenseType DefenseType { get; set; }
[field: Tooltip("부대 병력 리스트")]
@ -51,13 +52,14 @@ namespace BlueWaterProject
UnitName = null;
UnitType = GlobalValue.UnitType.NONE;
SailorCount = 0;
AttackerType = AttackerType.NONE;
OffenseType = OffenseType.NONE;
DefenseType = DefenseType.NONE;
UnitList = new List<AiController>(GlobalValue.ONE_UNIT_CAPACITY);
}
public Unit(string idx, string captainIdx, string sailorIdx, string unitName, GlobalValue.UnitType unitType,
int sailorCount, OffenseType offenseType, DefenseType defenseType, List<AiController> unitList)
int sailorCount, AttackerType attackerType, OffenseType offenseType, DefenseType defenseType, List<AiController> unitList)
{
Idx = idx;
CaptainStatIdx = captainIdx;
@ -65,9 +67,12 @@ namespace BlueWaterProject
UnitName = unitName;
UnitType = unitType;
SailorCount = sailorCount;
AttackerType = attackerType;
OffenseType = offenseType;
DefenseType = defenseType;
UnitList = unitList;
//SetAttackerTypeUnitAll();
}
public Unit(Unit unit)
@ -78,15 +83,25 @@ namespace BlueWaterProject
UnitName = unit.UnitName;
UnitType = unit.UnitType;
SailorCount = unit.SailorCount;
AttackerType = unit.AttackerType;
OffenseType = unit.OffenseType;
DefenseType = unit.DefenseType;
UnitList = unit.UnitList;
//SetAttackerTypeUnitAll();
}
#endregion
#region Custrom method
// private void SetAttackerTypeUnitAll()
// {
// foreach (var item in UnitList)
// {
// item.SetAttackerType(AttackerType);
// }
// }
public void SetOffenseType(OffenseType type) => OffenseType = type;
public void SetDefenseType(DefenseType type) => DefenseType = type;

View File

@ -10,7 +10,7 @@ namespace BlueWaterProject
#region Property and variable
[PropertyOrder(-11)]
//[EnableIf("@unit.AttackerType == AttackerType.OFFENSE")]
[ShowIf("@unit.AttackerType == AttackerType.OFFENSE")]
//[InlineButton("SetIslandInfoTest", "테스트 설정")]
[SerializeField] private IslandInfo attackIslandInfo;
@ -58,6 +58,7 @@ namespace BlueWaterProject
[PropertyOrder(-9)]
[HorizontalGroup("Split", 0.5f)]
[GUIColor("GetCreateUnitButtonColor")]
[EnableIf("@DataManager.Inst.GetUnitSoKey(unit.Idx) != null")]
[Button("유닛 생성")]
public void CreateUnit()
{

View File

@ -51,7 +51,7 @@ namespace BlueWaterProject
[FormerlySerializedAs("soldierPrefabList")]
[Tooltip("병력들의 프리팹 리스트(순서 중요)")]
[SerializeField] private List<GameObject> characterPrefabList = new(SOLDIER_PREFAB_CAPACITY);
[SerializeField] private List<GameObject> characterPrefabList = new(CHARACTER_PREFAB_CAPACITY);
[field: Tooltip("병력들의 애니메이터 컨트롤러 리스트")]
[field: SerializeField] public List<AnimatorController> AIAnimatorControllerList { get; private set; } = new(GlobalValue.AI_ANIMATOR_CAPACITY);
@ -64,7 +64,7 @@ namespace BlueWaterProject
private Transform playerUnits;
private const int MATRICES_CAPACITY = 9;
private const int SOLDIER_PREFAB_CAPACITY = 10;
private const int CHARACTER_PREFAB_CAPACITY = 10;
private const int PLAYER_UNIT_CAPACITY = 50;
#endregion
@ -83,7 +83,7 @@ namespace BlueWaterProject
GroundLayer = LayerMask.GetMask("Ground");
MaxGroundDistance = 0.5f;
UnitSpacing = 0.5f;
characterPrefabList = new List<GameObject>(SOLDIER_PREFAB_CAPACITY); // TODO : 프리팹 자동 리셋화 필요
characterPrefabList = new List<GameObject>(CHARACTER_PREFAB_CAPACITY);
InitUnitMatrices();
InitCharacterPrefabList();
InitPlayerUnitList();
@ -128,7 +128,7 @@ namespace BlueWaterProject
BaseCharacterPrefab = Utils.LoadPrefabFromFolder("Assets/05.Prefabs/Character", "BaseCharacter");
ArrowPrefab = Utils.LoadPrefabFromFolder("Assets/05.Prefabs", "Arrow_01");
characterPrefabList = new List<GameObject>(SOLDIER_PREFAB_CAPACITY)
characterPrefabList = new List<GameObject>(CHARACTER_PREFAB_CAPACITY)
{
Utils.LoadPrefabFromFolder("Assets/05.Prefabs/Character/Enemy", "Archer_E"),
Utils.LoadPrefabFromFolder("Assets/05.Prefabs/Character/Enemy", "SpearKnight_E"),
@ -206,6 +206,9 @@ namespace BlueWaterProject
}
}
/// <summary>
/// 동적 생성용 부대 생성 함수
/// </summary>
public void CreateUnit(string cardIdx, AttackerType attackerType)
{
var card = DataManager.Inst.GetCardDictionaryKey(cardIdx);
@ -213,15 +216,14 @@ namespace BlueWaterProject
var captainStat = DataManager.Inst.GetAiStatDictionaryKey(unit.CaptainStatIdx);
var sailorStat = DataManager.Inst.GetAiStatDictionaryKey(unit.SailorStatIdx);
// 비활성화 생성 및 정렬
SetPlayerUnits();
var newUnitController = Instantiate(UnitPrefab, Vector3.zero, Quaternion.identity, playerUnits).GetComponent<UnitController>();
newUnitController.unit = new Unit(unit);
DestroyDeployedUnits(newUnitController);
var baseName = characterPrefabList[(int)newUnitController.unit.UnitType].name;
var baseName = newUnitController.unit.UnitType.ToString();
SetUnitName(newUnitController, baseName);
newUnitController.unit.UnitList = new List<AiController>(newUnitController.unit.SailorCount + 1);
@ -273,22 +275,92 @@ namespace BlueWaterProject
baseObj.name = newSoldierName;
baseObj.gameObject.SetActive(false);
AiController aiController;
if (currentPos == heroPosition)
{
aiController = GetAiController(baseObj, newUnitController.unit.UnitType, captainStat);
}
else
{
aiController = GetAiController(baseObj, newUnitController.unit.UnitType, sailorStat);
}
var aiController = GetAiController(baseObj, newUnitController.unit.UnitType, currentPos == heroPosition ? captainStat : sailorStat);
aiController.SetAttackerType(attackerType);
newUnitController.unit.UnitList.Add(aiController);
}
}
newUnitController.transform.rotation *= unitControllerRotation;
}
/// <summary>
/// 에디터용 부대 생성 함수
/// </summary>
public void CreateUnit(UnitController unitController)
{
var unit = DataManager.Inst.GetUnitSoKey(unitController.unit.Idx);
SetPlayerUnits();
unitController.unit = new Unit(unit);
var captainStat = DataManager.Inst.GetAiStatSoKey(unitController.unit.CaptainStatIdx);
var sailorStat = DataManager.Inst.GetAiStatSoKey(unitController.unit.SailorStatIdx);
DestroyDeployedUnits(unitController);
var baseName = unitController.unit.UnitType.ToString();
SetUnitName(unitController, baseName);
unitController.unit.UnitList = new List<AiController>(unitController.unit.SailorCount + 1);
var unitControllerTransform = unitController.transform;
var unitControllerRotation = unitControllerTransform.rotation;
unitControllerTransform.rotation = Quaternion.identity;
var gridSize = 0;
switch (unitController.unit.SailorCount)
{
case 0:
gridSize = 1;
break;
case <= 3:
gridSize = 2;
break;
case <= 8:
gridSize = 3;
break;
case <= 15:
gridSize = 4;
break;
default:
print("유닛의 병사 숫자 설정 에러");
break;
}
var heroPosition = (gridSize * gridSize) / 2;
for (var i = 0; i < gridSize; i++)
{
for (var j = 0; j < gridSize; j++)
{
var currentPos = i * gridSize + j;
if (currentPos > unitController.unit.SailorCount) break;
var xOffset = (i - (gridSize - 1) / 2.0f) * UnitSpacing;
var zOffset = (j - (gridSize - 1) / 2.0f) * UnitSpacing;
var spawnPosition = unitControllerTransform.position + new Vector3(xOffset, 0, zOffset);
var baseObj = Instantiate(BaseCharacterPrefab, spawnPosition,
Quaternion.identity, unitController.transform);
var newSoldierName = $"{baseName}_{currentPos + 1:00}";
baseObj.name = newSoldierName;
baseObj.gameObject.SetActive(false);
var aiController = GetAiController(baseObj, unitController.unit.UnitType, currentPos == heroPosition ? captainStat : sailorStat);
aiController.SetAttackerType(unitController.unit.AttackerType);
aiController.InitStartInEditor();
unitController.unit.UnitList.Add(aiController);
}
}
unitController.transform.rotation *= unitControllerRotation;
}
private AiController GetAiController(GameObject baseObj, GlobalValue.UnitType unitType, AiStat aiStat)
{
@ -335,68 +407,6 @@ namespace BlueWaterProject
temp.AiStat = new AiStat(aiStat);
return temp;
}
/// <summary>
/// 부대 생성 함수
/// </summary>
public void CreateUnit(UnitController unitController)
{
DestroyDeployedUnits(unitController);
var baseName = characterPrefabList[(int)unitController.unit.UnitType].name;
SetUnitName(unitController, baseName);
unitController.unit.UnitList = new List<AiController>(unitController.unit.SailorCount);
var matrix = UnitMatrices.Find(um => um.units == unitController.unit.SailorCount);
if (matrix == null)
{
Debug.LogError("사용할 수 없는 병력의 숫자입니다. UnitManager의 UnitMatrices를 확인해주세요.");
return;
}
var unitControllerTransform = unitController.transform;
var unitControllerRotation = unitControllerTransform.rotation;
unitControllerTransform.rotation = Quaternion.identity;
for (var i = 0; i < unitController.unit.SailorCount; i++)
{
var row = i / matrix.columns;
var column = i % matrix.columns;
var xOffset = (column - (matrix.columns - 1) / 2.0f) * UnitSpacing;
var zOffset = (row - (matrix.rows - 1) / 2.0f) * UnitSpacing;
var spawnPosition = unitControllerTransform.position + new Vector3(xOffset, 0, zOffset);
var soldierObject = Instantiate(characterPrefabList[(int)unitController.unit.UnitType], spawnPosition,
Quaternion.identity, unitController.transform).GetComponent<AiController>();
var newSoldierName = $"{baseName}_{i + 1:00}";
soldierObject.name = newSoldierName;
unitController.unit.UnitList.Add(soldierObject);
soldierObject.gameObject.SetActive(false);
}
unitController.transform.rotation *= unitControllerRotation;
// if (unitController.unit.UnitType.ToString().Contains("_E"))
// {
// unitController.SetAttackerType(AttackerType.DEFENSE);
// foreach (var soldier in unitController.unit.UnitList)
// {
// soldier.SetAttackerType(AttackerType.DEFENSE);
// }
// }
// else if (unitController.unit.UnitType.ToString().Contains("_P"))
// {
// unitController.SetAttackerType(AttackerType.OFFENSE);
// foreach (var soldier in unitController.unit.UnitList)
// {
// soldier.SetAttackerType(AttackerType.DEFENSE);
// }
// }
}
/// <summary>

View File

@ -19,60 +19,67 @@ MonoBehaviour:
<UnitName>k__BackingField: Legolas
<UnitType>k__BackingField: 5
<SailorCount>k__BackingField: 8
<AttackerType>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: 0
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []
- <Idx>k__BackingField: unit_archer_p_002
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_001
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_001
<UnitName>k__BackingField: Robin Hood
<UnitType>k__BackingField: 5
<SailorCount>k__BackingField: 5
<AttackerType>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: 0
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []
- <Idx>k__BackingField: unit_axeman_p_001
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_002
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_002
<UnitName>k__BackingField: Olaf
<UnitType>k__BackingField: 6
<SailorCount>k__BackingField: 5
<AttackerType>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: 0
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []
- <Idx>k__BackingField: unit_spearman_p_001
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_003
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_003
<UnitName>k__BackingField: Lancer
<UnitType>k__BackingField: 7
<SailorCount>k__BackingField: 7
<AttackerType>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: 1
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []
- <Idx>k__BackingField: unit_sword_knight_p_001
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_004
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_004
<UnitName>k__BackingField: Achilles
<UnitType>k__BackingField: 8
<SailorCount>k__BackingField: 3
<AttackerType>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: 0
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []
- <Idx>k__BackingField: unit_swordman_p_001
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_005
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_005
<UnitName>k__BackingField: Aragorn
<UnitType>k__BackingField: 9
<SailorCount>k__BackingField: 5
<AttackerType>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: 1
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []
- <Idx>k__BackingField: unit_swordman_p_002
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_005
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_005
<UnitName>k__BackingField: King Arthur
<UnitType>k__BackingField: 9
<SailorCount>k__BackingField: 11
<AttackerType>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: 0
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []

View File

@ -6,7 +6,7 @@ using UnityEngine;
public class DataManager : Singleton<DataManager>
{
[Title("Scriptable Object")]
[field: Title("Scriptable Object")]
[field: SerializeField] public AiViewDataSo AiViewDataSo { get; private set; }
private Dictionary<string, AiView> aiViewDictionary;
@ -19,7 +19,7 @@ public class DataManager : Singleton<DataManager>
[field: SerializeField] public CardDataSo CardDataSo { get; private set; }
private Dictionary<string, Card> cardDictionary;
[Title("DataBase")]
[field: Title("DataBase")]
[field: SerializeField] public List<string> CardList { get; private set; } = new(GlobalValue.CARD_DATA_CAPACITY);
[Title("DataBase", "GameObject")]
@ -72,4 +72,10 @@ public class DataManager : Singleton<DataManager>
public AiStat GetAiStatDictionaryKey(string idx) => aiStatDictionary[idx] != null ? aiStatDictionary[idx] : null;
public Unit GetUnitDictionaryKey(string idx) => unitDictionary[idx] != null ? unitDictionary[idx] : null;
public Card GetCardDictionaryKey(string idx) => cardDictionary[idx] != null ? cardDictionary[idx] : null;
#if UNITY_EDITOR
public AiView GetAiViewSoKey(string idx) => AiViewDataSo.aiViewDataList.Find(item => item.Idx == idx);
public AiStat GetAiStatSoKey(string idx) => AiStatDataSo.aiStatDataList.Find(item => item.Idx == idx);
public Unit GetUnitSoKey(string idx) => UnitDataSo.unitDataList.Find(item => item.Idx == idx);
#endif
}

View File

@ -44,8 +44,15 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8ed17fd326510c349a4daf1dac3d88cc, type: 3}
m_Name:
m_EditorClassIdentifier:
attackIslandInfo: {fileID: 0}
unit:
unitName:
unitType: 10
soliderCount: 0
soldierList: []
<Idx>k__BackingField:
<CaptainStatIdx>k__BackingField:
<SailorStatIdx>k__BackingField:
<UnitName>k__BackingField:
<UnitType>k__BackingField: -1
<SailorCount>k__BackingField: 0
<AttackerType>k__BackingField: -1
<OffenseType>k__BackingField: -1
<DefenseType>k__BackingField: -1
<UnitList>k__BackingField: []