본문 바로가기

유니티

(76)
[ 유니티 ] Action (Delegate)과 event 키워드 [Action] [정의] Action 타입은 입력과 출력이 없는 메소드를 가리킬 수 있는 델리게이트이다 . cf)델리게이트란 ? 대리자 . c++ 함수포인터와 같이 메서드를 참조하는 대리자이다 . 델리게이트가 대신 할 수 있는 메서드는 반환형 / 매개변수 종류와 개수가 모두 일치해야함 . 델리게이트에 관하여 [사용] using UnityEngine; public class Cleaner : MonoBehaviour { Action _onButtonDown; void Awake() { //메소드를 등록.이때 ()는 붙이지 않음 _onButtonDown += Logger_1; _onButtonDown += Logger_2; } void Update() { if(Input.GetMouseButtonDown(0..
[유니티] Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?) 오류 [오류 상황] [상황] 싱글톤으로 구현한 UI Manager가 있는 씬에서 유니티 씬을 종료시 해당 오류가 발생하였다 . [원인 파악] [해결] 해당 부분은 UI Manager에 연결된 SystemUI의 OnDisable에서 UIManager의 Instance를 호출하여 초기화를 하는 코드가 있었다 . 이때 , 사라진 UI Manager를 인스턴스를 호출하며 다시 생성하기에 OnDestroy에 newGameObject를 생성하여 Scene의 찌꺼기가 남는 상황이다 . 해당 부분을 다른 방식으로 변경하여 해결하였다 .
[유니티] 캔버스를 부모로 설정시 Transform이 바뀌는 문제 해결 [부모 설정] [문제] 오브젝트를 생성하여 캔버스를 부모로 지정할때 Transform의 값이 0,0,0이 아닌 캔버스의 posX,posY를 -로 바꾼 값으로 나왔다 . 새로 생긴 UI 가 캔버스의 중앙에 오지 않고 왼쪽 하단으로 가게 되었다 . [해결] 부모를 설정시 원래 World Position을 사용하지 않게 한다 . 부모를 설정해주는 SetParent의 설명을 보면 , 부모외에 인자가 하나 존재한다 . public void SetParent ( Transform Parent , bool worldPositionStays ); worldPositionStays는 true인 경우 개체가 이전과 동일한 World Space상의 위치, 회전 및 크기를 유지하도록 부모에 상대적이게 위치, 크기 및 회전이 ..
[UI Tool Kit] 04 . 레이아웃과 트랜지션 애니메이션 [ UI 오버레이 ] [ Bottom Sheet ] 버튼을 눌러 화면 하단에서 UI가 올라오는 것을 Bottom Sheet / Action Sheet이라고 한다 . 특징은 기존 UI를 건들지 않고 오버레이 함이 특징이다 . [ 부모 추가 ] 기존 UI의 부모가 될 Visual Element를 추가한다 . 문제는 Size를 100%로 함에도 화면을 덮지 못하고 기존 UI를 밀어올린다 . [ 포지션 : Relative / Absolute ] [ 상황 재현 ] 다음과 같은 상황에서 파란 UI는 중앙에 그려져야 한다 . 이렇게 배치됨은 flex의 설정 때문이다 .. UGUI의 LayoutGroup에 추가된것과 같은 상황인데 , 이떄 Layout Element의 Ignore Layout과 같은 설정이 필요하다 ...
[UI Tool Kit] 03 . 레이아웃과 버튼 애니메이션 [초기 세팅] [UXML 생성] Create => UI ToolKit => UI Document 생성 [Panel Setting 생성] Create - UI ToolKit - Panel Settings Asset생성 : Panel Setting은 UXML로 만든 UI를 게임씬에 그리기 위한 틀 (Canvas) . 패널 전체 테마 텍스트 설정 가능. ScaleMode는 화면에 비율에 따라 어떠한 크기로 UI그릴지 정한다 = Canvas Scaler [씬에 적용] 게임오브젝트 생성 , UI Document 컴포넌트 추가 , Source Asset에 UXML 연결 / Panel Setting 연결 [UI Builder에서 시작] [테마 설정] Vire Port에서 우측 상단 Unity Default Runti..
[유니티] UI Tool Kit 01 . UI Tool Kit에 관하여 [ 유니티의 UI 제작 방법 ] [IMGUI] 스크립트만으로 제작하는 방식 . OnGUI함수에 GUI 관련 라이브러리를 사용 , 인터페이스 요소 생성,배치 [UGUI] 유니티 제공 UI 패키지를 활용하는 방식 . 게임오브젝트 기반 . [UI Tool Kit] 유니티의 최신 UI 시스템으로, 플랫폼 전반에서 성능을 최적화하도록 설계되었으며 표준 웹 기술을 기반으로 한다. UI 툴킷을 사용하면 Unity 에디터용 확장을 생성하고 게임 및 애플리케이션을 위한 런타임 UI를 생성할 수 있다. [ UI 툴킷의 특징 ] [범용성] 개발의 범용성 : 널리 사용되고 있는 웹 개발과 상당히 흡사한 방식 사용 . 누구나 쉽게 인터페이스 제작 가능 적용의 범용성 : UI ToolKit은 유니티 에디터 윈도우를 직접 제작가능..
[ 유니티 ] UI Tool Kit 02 . 첫 런타임 UI 만들기 [첫 런타임 UI 만들기] 유니티 도큐먼드를 참고하였다 . [UI ToolKit] UI ToolKit을 사용하여 캐릭터 선택 화면을 만들어 본다 . UI 요소 및 템플릿 만들기 씬을 설정하는 방법 UI에 스크립팅 로직을 연결하기 등을 다루며 , USS 를 통한 스타일링은 다루지 않는다 . [ 단계 ] 메인 UI 뷰 만들기 씬 설정 표시할 샘플 데이터 생성 메인 UI 뷰를 위한 컨트롤러 생성 리스트 엔트리 UI 템플릿 생성 리스트 엔트리 UI를 위한 컨트롤러 생성 사용자의 선택에 응답 [ 01 . 메인 UI 뷰 만들기 ] [시스템] 최종화면은 두개의 개별 UI 템플릿 (UXML) 로 구성된다 . (메인 / 리스트 엔트리 템플릿) 메인 UI 뷰는 캐릭터 이름이 나열된 리스트 / 선택한 캐릭터의 세부 정보 /..
[유니티] Scene 격자 색상 변경 [Scene Grid 색상 변경] [개요] 씬 내부의 격자는 원래 회색이다 . 가시성을 높이기 위해 색상을 변경 할 예정이다 [색상변경] Edit - Preference - Color로 들어간다 . 여기서 Grid의 색상을 변경하면 이렇게 반영됨을 확인 할 수 있다 .