본문 바로가기

일기

유니티 에디터에 로그 띄우기 메모

'정리된 글이 아닙니다 그냥 메모장입니다'

 

1. 커스텀 에디터로 로그 띄우기 

에디터 윈도우로 로그를 찍기 위해 로그 파일을 json 으로 저장 후 불러 오도록 함. 

커스텀 에디터에 검색 기능 및 태그, 레벨 필터링 기능 추가하여 편의성 개선 

 

2. 에디터 로그를 처리 

에디터 로그를 처리 하려고 했더니 LogManager가 싱글톤인 점이 문제가 됐다. 

싱글톤은 플레이모드 종료시 파괴됐기 때문. 

플레이모드에서 에디터모드로 넘어올 때 m_ShttingDown이 true가 되면서 retrun 됨.

-> static변수는 에디터 모드로 돌아올 때 초기화 되지 않나?

-> static 변수는 애플리케이션 도메인 수준에서 존재하기 때문에 플레이모드가 종료되어도 그 값이 유지 

 

근본적으로 에디터 로그를 처리하기 위해서는 로그 시스템이 플레이모드에 종속되어서는 안됨. 

그럼 인스펙터를 통한 태그, 로그 레벨 설정은 불가능한가? 

-> 설정값을 스크립터블 오브젝트로 옮기면 에디터에서 사용 가능한가? 

-> 스크립터블 오브젝트를 Resources폴더에 두고 에디터에서 로딩하면 되지 않나? 

-> 그러면 플레이모드에서 동적으로 값을 바꾸는 것은 불가능 하지 않나? 

-> 에디터에서도 사용하면서 플레이모드에서 동적으로 값을 변경하려면 어떻게 해야하지? 

-> 파일 시스템을 이용해 설정값을 저장하고 로그 시스템에서 주기적으로 파일을 읽어와서 설정을 적용하는 방법 

 

SO를 통한 접근법 시도 

-> 기본 설정은 SO를 통해 관리. 

-> LogManager는 플레이 모드에 종속 받지 않도록 Static 클레스로 제작하며 SO에 GetLogLevel()등의 메소드를 생성하여 참조하도록 설정 

-> 런타임에서의 변경점은 SO클레스 내부에서 [NonSerialized] 필드로 관리 (에디터 모드로 돌아오면 초기화됨) 

-> SO 객체의 OnValidate() 콜백이 호출될 경우 LogSystem이 자동으로 업데이트 되도록 변경. 런타임 변경점을 따로 관리할 필요가 없음 

->정상 작동 확인. 

'일기' 카테고리의 다른 글

NGO 적용  (0) 2025.04.23
일기  (0) 2025.04.07