본문 바로가기
Unity Study/에셋 공부

Odin Inspector - 오딘의 클래스 알아보기

by 백삼_zif 2023. 12. 19.
반응형

오딘 인스펙터의 클래스 공부해보기

오딘 인스펙터 내부의 클래스들에 대해서 알아보고, 어떤식으로 작동되는지 분석해 보는 시간을 가져보려고 합니다.
오딘 인스펙터 에셋을 추천을 했으니, 그 내부의 구조에 대한 설명도 해드리는게 맞겠다 싶어서 이런 포스트를 올리게 되었네요.

오딘 인스펙터 주요 클래스

  1. OdinMenuTree
    아마 오딘 인스펙터의 큰 뼈대가 되어주는 클래스라고 생각됩니다.
    System.Collections의 인터페이스인 IEnumerable 을 상속받고 있습니다
    1.  OdinMenuTree 속 주요 변수 살펴보기
          public static 으로 OdinMenuTree 클래스인 ActiveMenuTree 가 있고,
          private static 으로 HashSet<OdinMenuItem> cachedHashList 이 있습니다.
          private OdinMenuTreeDrawCongif 클래스로 defaultConfig가 있습니다.

          public 변수들로는
          List<OdinMenuItem> FlatMenuTree 라는 리스트와,
          OdinMenuTreeSelection 클래스를 불러오는 Selection => selection;
          OdinMenuItem 클래스로 가장 근본이되는 RootMenuItem => root; 
          List<OdinMenuItem> 리스트로 접근하는 MenuItems => root.ChildMenuItems;
          
         이 외에도 여러 변수들이 있긴 한데, 아마도 위에 적은 변수들 외에는 직접 접근을 해야하는 경우는
        많이 없을 것 같아서 따로 소개는 안했습니다.
        
    2.  OdinMenuTree 속 주요 함수 살펴보기
          Add();
          AddRange<T>();
          IEnumerable<OdinMenuItem> 반환형을 갖는 EnumerateTree(); DFS 방식으로 탐색해주는 함수
          DrawMenuTree();

          ...등등.. 함수들이 너무 많네요. 제가 직접 사용할 함수의 경우에는 주로 Add나 EnumerateTree정도
       일것 같네요.  

    3.  OdinMenuTreeExtension 주요 함수 살펴보기 (확장메서드)
      GetMenuItem();
      AddAllAssetsAtPath();
      AddMenuItemAtPath();
      AddObjectAtPath();
      SortMenuItemsByName();
      AddIcon();
      AddIcons();
      AddThumbnailIcon();

      확장 메서드의 경우에도 오버로드들이 여러가지로 되어있어서, 사용전에 어떤 오버로드가 있는지 확인하시는 것도 좋을듯 합니다.
  2. OdinMenuItem
    오딘 인스펙터에서 관리되는 가장 작은 단위의 요소로 보시면 될것 같네요.

    Action<OdinMenuItem> OnDrawItem;
    Action<OdinMenuItem> OnRightClick;
    등과 같은 이벤트들이 있고, 메뉴들의 Icon을 불러오는 프로퍼티들이나, 해당 아이템이 선택되거나 해제되는 동작을 정의해주는 함수들이 있습니다.
    Select(); , Deselect();
    이 외에도 해당 메뉴아이템의 토글키에 관한 함수나,  경로등을 불러오는 함수들이 있는데, 직접적으로 사용할 일은
    적어보이네요.

  3. OdinMenuTreeSelection
    오딘 메뉴 트리에서 어떤 오딘메뉴아이템이 선택되었는지에 해당되는 정보를 담는 클래스입니다.
    OdinMenuItem에서 Select된 경우에 해당 Selection에 메뉴아이템 정보가 담기는 방식으로 동작하는 것으로 보입니다. 

  4. 그외 클래스들
    OdinMenuEditorWindow
    OdinEditorWindow
    OdinMenuTreeDrawConfig
    OdinMenuStyle
    SirenixGUIStyles
    Clipboard
    PropertyTree

우선은 오딘 인스펙터에서 사용하는 클래스는 이정도만 알아두시면 충분한 것으로 생각됩니다.
오늘은 오딘 인스펙터에 포함된 클래스들을 나열해보고 그 안에 어떤 함수가 있는지 훑어보는 시간을 가졌습니다.
다음번에는 해당 에셋에 포함된 어트리뷰트의 종류들을 나열하고 배워보는 시간을 가져보려고 합니다.

그럼 다음에 또봐요~

반응형