## 개요 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..
Unity 개발에 있어 핵심요소중 하나는 직렬화시스템이라고 할 수 있기에 정리해본다. ## 직렬화(Serialization) - 컴퓨터 과학의 Data Storage 측면에서 데이터구조나 객체 상태를 다양한 플랫폼 또는 전송간에도 재구성(역직렬화;Deserialization)할 수 있는 포맷(byte stream)으로 변환하는 프로세스 - 직렬화 방식은 컴퓨터가 처리하기 쉬운 이진(binary)방식 byte stream과 사람이 처리하기 쉬운 text방식 byte stream이 있다(e.g. 이미지에 사용되는 이진방식포맷, 네트워크간 데이터 전달에 사용되는 JSON같은 text방식포맷) - 컴퓨팅과 직렬화는 떼어 놓을 수 없는 관계 - 데이터 지속성(Persistence)를 위해 저장장치 또는 DB에 저..
유지보수시에 버그 발생을 높이고 디버깅이 힘들어지므로 되도록 멀리하는것이 좋지만 게임과 같은 특정분야에서 성능이나 효율성(소규모개발)을 이유로 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..
수학, 물리랑 관계없이 살다가 게임개발에 발을 들여놓으니 모든것이 수학이요 물리다.그동안 속력과 속도의 차이에 대해 생각없이 살았는데 개념상 차이가 있어 간단하게 정리를 한다. vector와 scala- vector(벡터) : 크기와 방향이 있는 물리량(e.g. 속도(velocity), 가속도, 힘, 중력장 등) - scala(스칼라) : 크기만 있고 방향이 없는 물리량(e.g. 속력(speed), 시간, 부피, 질량 등) Unity에서도 physics를 사용하면 `Rigidbody.AddForce`같이 힘을 가할때 vector를 인자로 받는다. 그리고 가중치값은 `float`과 같은 타입으로 정의한 scala를 사용한다. vector에 scala(가중치)를 곱하거나 나눠서 방향에 영향을 주지 않고 해당..
개요 게임업계에 몸담은적 없는 개발자출신이 혼자 게임개발을 진행하다보니 그래픽작업에 에로사항이 꽃피고 있다. 좀 찾아보니 대형게임은 컨셉아티스트(원화), 일러스트레이터(삽화) 외 그래픽아티스트인 도트디자이너, 배경디자이너, 3D모델러, 애니메이터, 이펙터 등등 뭐 세분화 시키려면 엄청 다양한 분야로 나뉘는듯 보인다. 요즘엔 이 모든것들을 Entertainment Design이라 한다고도 하는데 키보드만 칠 줄 아는 내가 지금 배워서 할 수 있을리가 만무하다. 대형게임도 아니니 원화는 제끼고 일러스트 몇개와 게임리소스만 있으면 되는데 그렇다면 선택지는 아래와 같다. 게임일러스트 게임의 화장빨 얼굴이다. 게임설치전부터 사용자에게 다가가는 가장 첫인상이기 때문에 적어도 일정레벨 이상의 퀄리티가 필요하다. 필수..
- Total
- Today
- Yesterday
- logging
- 비동기
- Visual Studio Code
- framework
- 코루틴
- Debug
- coroutine
- .net
- Singleton
- 싱글톤
- firestore
- vscode
- github
- selenium
- 환경설정
- gcp
- initialize
- git
- Addressables
- Custom Package
- async
- VS2022
- 닷넷
- C#
- 유니티
- RuntimeInitializeOnLoadMethod
- unity
- Python
- Scraping
- await
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |