728x90
- 사용 예상 폴더 생성
- Managers Script생성
- 전체적인 모든 Manager class관리
- 싱글톤 구현
- Init()에서 자식 Manager들 초기 세팅
- Init()에서 Manager 오브젝트 생성 및 Manager 컴포넌트 연결
- Clear()에서 모든 자식 Manager들 초기화
- Popup UI 오브젝트 생성 및 Script 생성
- 오브젝트와 Script는 이름을 똑같이 맞춰준다.(Prefab자동화때 Script컨포넌트로 생성하기 위해)
- Dictionary - Bind하여 오브젝트를 저장할 공간으로 사용
- Dictionary<Type, UnityEngine.Object[]> _objects = new Dictionary<Type, UnityEngine.Object[]>();
- Bind - Enum에 등록된 UI오브젝트 자식 명칭과 Type으로 자식 오브젝트를 찾아 Dic으로 관리한다.
- void Bind<T>(Type type) where T : UnityEngine.Object
- FindChild - 재귀형식으로 전달받은 컴포넌트를 찾을 건지 결정하여 자식오브젝트를 찾아 리턴해준다.
- GameObject FindChild(GameObject go, string name, bool recursiv = false)
- T FindChild<T>(GameObject go, string name, bool recursiv = false) where T : UnityEngine.Object
- Get - Bind하여 Dictionary리로 관리되는 자식들을 가져온다.
- T Get<T>(int idx) where T : UnityEngine.Object
- Button GetButton(int idx)
- Text GetText(int idx)
- UI_EventHandler Script 생성 - UI공통으로 사용하는 이벤트 핸들러를 작성한다.
- BindEvent - UI_EventHandler에서 어떤 이벤트를 등록할지 결정한다.
- public void BindEvent(GameObject go, Action<PointerEventData> action, Define.UIEvent type = Define.UIEvent.Click)
- UI_Base Script 생성
- UI 공통 함수를 정의 하는 부분이다.
- Bind(), Get(), BindEvent() 이동
- Utils Script 생성
- FindChild이동
- Extensions확장 Script 생성
- EventBind를 GameObject의 확장메서드로 등록한다.
- ResourceManager Script 생성 (Prefab)
- public T Load<T>(string path) where T : Object
- public GameObject Instantiate(string path)
- UIResourceManager Script 생성
- UI 프리팹을 생성하며 자원을 관리하는 매니저
- UI 자원에는 Popup, Screen, SubItem이 있다.
- UI_Popup, UI_Screen 생성하여 UI_Base를 상속
- _sortOrder, _popups, _screen, Root 생성
- SetCanvas() - 캔버스가 Popup인지 Screen인지에 캔버스 설정을 적용한다.
- void SetCanvas(GameObject go, bool sort)
- ShowPopupUI - 팝업 유아이 프리팹 생성
- public T ShowPopupUI<T>(string name) where T : UI_Popup
- ShowScreen - 스크린 유아이 프리팹 생성
- public T ShowScreen<T>(string name) where T : UI_Screen
- ClosePopupUI - 팝업창 종료
- public void ClosePopupUI()
- AllClosePopupUI - 모든 팝업창 종료
- public void AllClosePopupUI()
- Clear - UI 모두 제거하며 메인 매니저 Clear에서 호출
- public void Clear()
- UI_Base Script 추상클래스로 변경 Init()정의
- UI_Popup, UI_Screen Init 재정의
- Init 재정의시 SetCavas를 호출하여 팝업인지 스크린인지 등록한다.
- GameScene Script 생성
- 프로그램의 시작점으로 모든 오브젝트를 생성을 담당한다.
- 현재 ScreneType 저장
- EventSystem 등록
- BaseScene Script 생성
- GameScene에서 만든 공용 함수 등록 EventSystem생성 및 Clear 및 SceneType
- start 말고 Awake에 Init 정의
- SceneManagerEx Script생성
- 씬간 이동에 있어 현재 씬을 관리하는 메니저이다.
- Load, currentScene, Clear, GetSceneName
- public void LoadScrene(Defines.Scene type)
- string GetSceneName(Defines.Scene type)
- public void Clear()
- Poolable Script 생성
- 오브젝트 풀링을 사용하는지 안하는지 유무만 판단
- PoolManager Script 생성
- Pool class
- Original, _stackPool, Root
- Init() - Original, Root 정의 및 Poolable 생성
- public void Init(GameObject original, int count = 5)
- Create() - Poolable 생성
- public Poolable Create()
- Push - Poolable 활성화 관리 및 부모 등록, 스택에 push
- public void Push(Poolable poolable)
- Pop - Poolabe 활성화 관리(Pop한 객체가 어느 부모에 표시될지) 및 스택 Pop
- public Poolable Pop(Transform parent)
- PoolManager
- Pool Dictionary로관리, 최상위 부모 root 관리
- Init() - 최상위 부모 생성
- public void Init()
- CreatePool - Pool생성
- public void CreatePool(GameObject orginal, int count = 5)
- push() - pool 이 없다면 받은 풀제거 있다면 push
- public void Push(Poolable poolable)
- Pop() - 넣을 풀이 없다면 새롭게 생성
- public Poolable Pop(GameObject orginal, Transform parent = null)
- Clear() - 최상위 부모의 자식모두 제거 dic clear
- public void Clear()
- Pool class
728x90
'Unity' 카테고리의 다른 글
[Unity] 전처리사용 하여 Log 제한 방법 (#If, Conditional, 심볼) (0) | 2023.03.07 |
---|---|
[Unity] Build 여러개 실행할 때 멈추는 현상 해결방법 (0) | 2023.01.02 |
[Unity] 빌드 자동화방법 (0) | 2022.11.21 |
[Unity] 카메라이동(줌인, 줌아웃, 마우스회전, 마우스이동, 방향이동) (0) | 2022.11.17 |
[Unity2D] 캐릭터 픽셀단위로 이동하는 방법 (0) | 2022.11.14 |