## 개요 Unity UI(uGUI)는 built-in으로 탑재된 GameObject기반의 UI 관련 패키지이다. GameObject기반이니 당연히 컴포넌트 기반으로 동작한다. 핵심은 "제공되는 각기 다른 특성을 지닌 컴포넌트들을 사용해 Canvas게임오브젝트 아래에 자식 UI게임오브젝트들을 구성하면, Canvas 게임오브젝트는 자식까지 포함해 C++ 엔진과 연동해서 UI로 각 프레임에 그려주겠다"이다. (C++로 작성된 핵심 컴포넌트는 Canvas, RectTransform, CanvasRenderer, CanvasGroup) UI Toolkit이라는 신규 UI시스템을 유니티에서 밀고는 있지만 아직은 uGUI가 지원범위도 넓고 안정적이라 실무 도입은 이른것 같다. UI Toolkit으로 완전히 전환되는..
## Addressables system(주소지정가능 시스템)- 런타임에 자산을 load 및 release 하기위한 API와 content를 구성 및 패키징하는 tools 및 scripts 제공- 주소로 Asset을 로드하는 쉬운 방법 제공 (기존 직접참조, Resources폴더, AssetBundle의 상위호환 추상화 계층)- 자산 호스팅 위치를 코드수정 없이 유연하게 변경 가능(local, CDN 등)- Dependency management : content를 반환하기 전에 종속된 모든 mesh, shader, animation 등이 로드됨- Memory management : reference를 자동으로 계산하고 profiler를 통한 메모리 프로파일링 기능 제공 - 내부적으로 Weak refe..
## 어셈블리 정의 인스펙터 속성(*.asmdef 에셋의 직렬화 정보) - name : 어셈블리 이름(unique 해야함) ### General - Allow 'unsafe' Code : C# `unsafe`키워드를 사용중인지 Unity 컴파일러에게 알림(결과적으로 "/unsafe" 옵션 전달) - Auto Referenced : predefined assemblies(e.g. Assembly-CSharp.dll, etc)들이 해당 어셈블리를 자동참조 하는지 여부 - No Engine References : Unity Engine 어셈블리 참조 여부 - Override References : precompiled assemblies(외부에서 컴파일된 plug-in)를 자동참조 하지않고 수동참조하도록 오버..
## 개요 개발을 할때 보통 전처리기 지시문(Preprocessor Directives)을 사용해서 디버깅용 개발빌드와 릴리즈용 배포빌드를 분리하는게 보편적이다. Unity에서도 이런 전처리기 지시문을 통한 조건부 컴파일을 지원한다. (참고 : UNITY_EDITOR는 유니티 에디터를 통해 컴파일시에만 정의됨) public static void ConditionalMethod() { #if UNITY_EDITOR Debug.Log("UNITY_EDITOR 정의시에만 해당 메서드가 산출물에 포함됨"); #endif } 유니티 공식문서에도 나와있듯이 특정 method 호출부도 조건부컴파일 하고 싶을때는 C# `Conditional`어트리뷰트를 사용해 아래와 같이 더 깔끔하게 사용이 가능하다. 단, 몇가지 제..
## `GameObject.SetActive`와 `Behaviour.enabled` - GameObject 활성여부 vs 컴포넌트의 활성여부 - Scene내 객체(GameObject)의 활성여부 vs 객체내 부품(Component)의 활성여부(동작가능 : e.g. Update) - 참고로 Transform의 경우 Bahaviour가 아닌 Component에서 바로 상속하기에 enabled가 없음. 즉, 항상 동작. ## MonoBehaviour 파생 클래스의 생성자 - Unity Engine 및 직렬화 시스템에 의해 생성자가 여러번 호출될 수 있으니 pure C# API class에만 사용하고 Unity API class에는 사용금지 - 참고로 `RuntimeInitializeOnLoadMethod(Ru..
유지보수시에 버그 발생을 높이고 디버깅이 힘들어지므로 되도록 멀리하는것이 좋지만 게임과 같은 특정분야에서 성능이나 효율성(소규모개발)을 이유로 Singleton Pattern이 많이 쓰이는것 같아 정리하도록 한다. ## 개요 MonoBehaviour나 ScriptableObject같은 Unity Object를 Singleton으로 만들수도 있지만 객체 설계 취지에서 벗어나고 객체 lifetime에 대한 제어권이 Unity C++ Engine에 있다는게 찝찝하기에 개인적으로는 사용을 지양한다. 참고로 대충 아래와 같은 방식으로 `Awake()`를 통해 초기화하해서 사용하며 안정성을 위해 부가 코드가 추가될 수 있다. ## MonoBehaviour Singleton 보통 싱글톤을 상속과 일반화를 통해 많이 ..
개요 게임이 실행될때 초기화를 위한 작업이 필요하다면 `RuntimeInitializeOnLoadMethod`라는 attribute를 사용하여 설정 가능하다. 해당 어트리뷰트로 설정된 static method는 게임이 로드된 후 호출된다.(invoked) Assets폴더 하위 C# 스크립트의 static method 중 하나에 해당 attribute를 설정해서 정의 가능하다. Scene에 올라가서 동작하는게 아니기 때문에 `MonoBehaviour`와 같은 Unity클래스 외 C#클래스 어느곳에 정의해도 무방하다. 예를들면 Assets root폴더에 AppMain.cs 스크립트를 만들고 아래와 같이 설정 가능하다. using UnityEngine; internal class AppMain { [Runti..
- Total
- Today
- Yesterday
- 환경설정
- gcp
- coroutine
- C#
- Addressables
- Custom Package
- initialize
- RuntimeInitializeOnLoadMethod
- 유니티
- selenium
- Python
- vscode
- .net
- framework
- 비동기
- async
- VS2022
- 닷넷
- await
- 코루틴
- Visual Studio Code
- Debug
- git
- logging
- Singleton
- firestore
- unity
- github
- 싱글톤
- Scraping
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |