• Home
  • About
    • KKsDev photo

      KKsDev

      게임 프로그래머를 목표로 Unity, C#을 공부하고 있습니다.

    • Learn More
    • Email
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

내일배움캠프 46일차 TIL 유니티는 Stack 기본적으로 직렬화를 지원하지 않는다

22 Sep 2023

Reading time ~1 minute

오늘 배운 내용

  1. 몬스터가 플레이어를 추격하는 코드

  2. Stack 자료구조는 Unity Inspector에서 SerializeField를 지원하지 않는다.



nbcbanner

몬스터가 플레이어를 추격하는 코드

몬스터가 플레이어를 추격하는 기능을 구현하기 위해 필요한 것은

  1. 몬스터의 위치 (transform.position)
  2. 플레이어의 위치 (GameManager.Instance.Player.transform.position)

이 두 가지를 사용해서 방향과 거리를 구할 수 있다.


protected float DistanceToTarget()
{
    return Vector3.Distance(transform.position, ClosetTarget.position);
}

protected Vector2 DirectionToTarget()
{
    return (GameManager.Instance.Player.transform.position - transform.position).normalized; 
}

그리고 fixedUpdate()마다 방향과 거리를 구해서

protected override void FixedUpdate()
{
    base.FixedUpdate();

    Vector2 direction = Vector2.zero;

    if(DistanceToTarget() < followRange)
    {
        direction = DirectionToTarget();
    }

    CallMoveEvent(direction);
    Rotate(direction);

}

범위 안에 있다면 해당 방향으로 움직이도록 한다.



Stack 자료구조는 Unity Inspector에서 SerializeField를 지원하지 않는다.

개인 프로젝트 간에 ON되는 UI들의 순서를 Stack 저장해뒀다가

뒤로가기 버튼으로 Stack에서 Pop()을 하며 UI를 Off하는 기능을 만들었다.


도중에 테스트를 하기위해서 SerializeField를 선언해서 유니티의 Inspector창에서 Stack을 확인해 보려고했다

그런데 표시가 되지 않았고, 이유를 찾아보게 되었다.


nity Inspector에서 SerializeField를 사용하면 해당 변수는 직렬화되어 인스펙터에서 수정할 수 있게 되는데

Stack은 Unity에서 기본적으로 지원화는 직렬화 형식이 아니기 때문에 인스펙터에서 표시되지 않는다.



nbcthumbnail



TIL내일배움캠프스파르타 Share Tweet +1