
오늘 학습 키워드
유니티 심화 팀 프로젝트
오늘 학습 한 내용을 나만의 언어로 정리하기
정리된 클래스 다이어그램
--- config: class: hideEmptyMembersBox: true layout: dagre --- classDiagram direction TB class GameManager { } class MapManager { } class PlayerManager { } class PlayerData { } class Player { } class SceneLoadManager { } class Monster { } class MonsterAI { } class BehaviourTree { } class EliteMonsterAI { } class WarriorMonsterAI { } class LauncherMonsterAI { } class Node { } class Node_2["Node"] { } class Node_3["Node"] { } class MonsterWeapon { } class Bullet { } class MeleeWeapon { } class MonsterAnimator { } class MonsterAttackProxy { } class PlayerController { } class PlayerStat { } class PlayerAnimation { } class PlayerInteract { } class Shield { } class MapData { } class BaseScene { } class Portal { } class Water { } class Trap { } class MonsterSpawnData { } class UIManager { } class BaseUI { } class PlayerWeaponHitbox { } PlayerData -- PlayerManager PlayerManager -- Player Monster -- MonsterAI BehaviourTree -- MonsterAI MonsterAI <|-- EliteMonsterAI MonsterAI <|-- WarriorMonsterAI MonsterAI <|-- LauncherMonsterAI WarriorMonsterAI o-- Node EliteMonsterAI o-- Node_2 LauncherMonsterAI o-- Node_3 Monster -- MonsterWeapon MonsterWeapon <|-- Bullet MonsterWeapon <|-- MeleeWeapon Monster -- MonsterAnimator MonsterAnimator -- MonsterAttackProxy Player -- PlayerController Player -- PlayerStat Player -- PlayerAnimation Player -- PlayerInteract Player -- Shield MapManager o-- MapData SceneLoadManager o-- BaseScene MapData -- Portal MapData -- Water MapData -- Trap MapData -- MonsterSpawnData UIManager o-- BaseUI Player -- PlayerWeaponHitbox GameManager -- PlayerData
데이터 저장/불러오기
// PlayerManager.cs
public void SaveData()
{
// Player == null => 게임 시작 창에서 끈거
if (Player == null) return;
Data.health = Player.stat.currentHP;
Data.runeOwned = runeOwned;
Data.coin = coin;
Data.shieldCount = Shield.RemainShield;
var str = JsonUtility.ToJson(Data, true);
File.WriteAllText(Path.SavePath, str);
Debug.Log("저장 완료" + Path.SavePath);
}
public void LoadData()
{
if (File.Exists(Path.SavePath))
{
string str = File.ReadAllText(Path.SavePath);
PlayerData data = JsonUtility.FromJson<PlayerData>(str);
Data = data;
SetData();
}
else
{
NewData();
}
}
public void SetData()
{
for (int i = 0; i < Data.runeOwned.Length; i++)
{
SetRuneOwnedIndex(i, Data.runeOwned[i]);
}
SetCoin(Data.coin);
Shield.GetOldShield(Data.shieldCount);
Player.SetHealth(Data.health);
}
public void NewData()
{
Data = new PlayerData
{
runeOwned = null,
coin = startCoin,
health = startHealth
};
var str = JsonUtility.ToJson(Data, true);
File.WriteAllText(Path.SavePath, str);
Debug.Log("저장 완료" + Path.SavePath);
LoadData();
}학습하며 겪었던 문제점 & 에러
문제 1
- 문제&에러에 대한 정의
Trigger Stay가 안불렸음
- 해결 방법
rigidbody가 자고있었음 그래서 깨워줌
if(rb.IsSleeping())
rb.WakeUp();- 새롭게 알게 된 점
rigidbody는 불필요한 연산을 피하기 위해 알아서 잠듬
- 이 문제&에러를 다시 만나게 되었다면?
플레이어처럼 중요한 애는 최대한 깨어있도록 함