728x90
반응형

Game Development, 게임개발/개발 98

유니티 애셋 배포 플로우, Unity Work Flow

Unity Asset Workflow AssetBundle? 모델, 텍스처, 프리팹, 오디오클립, 씬 등의 애셋의 묶음, 파일 아카이브 애셋번들을 이용하여 런타임에서 애셋 로드 후 사용 가능(런타임 메모리 최적화) 타겟 플랫폼에 맞게 애셋 최적화 가능 AssetBundle 형태 bundle : 에셋번들 파일 bundle.manifest : 포함된 Asset Meta info, Dependency, Hash, CRC 등 정보들을 나타내는 파일 AssetBundle의 개수? 너무 많음 → 메모리 사용량 증가, 로딩 시간 증가, 대용량 다운로드 너무 적음 → 빌드 시간 증가, 개발 과정 복잡, 다운로드 시간 증가 AssetBundle 이 갖는 Manifest? 순환 중복 검사(CRC) 데이터 등과 같은 번들에..

로그캣 사용하기, 안드로이드에서 환경변수 설정하기 [Unity]

안드로이드에서 오류를 발견하기 위해서는 유니티 콘솔과 같은 창이 필요하다. 하지만 직접 볼 수는 없기에 PC를 이용해야 하는데 그것이 바로 로그캣이다. 하지만 바로 로그를 볼 수는 없고 몇 가지 해야할 일이 있다. 우선 ADB(Android Debug Bridge)를 설정해야 한다. 쉽게 말하자면 PC에서 안드로이드에 명령을 내릴 수 있게 도와주는 도구다. 하지만 adb를 사용하기 위해서는 cmd창에서 adb.exe의 경로로 이동해서 명령을 날려야 하는데 매번 경로로 찾아들어가기 번거롭기 때문에 환경변수를 설정해서 어디서든지 adb를 사용할 수 있도록 설정한다. (※안드로이드 스튜디오 설치시 특별히 경로를 변경하지 않았다면 adb의 경로는 C:\Users\"로그인한 계정"\AppData\Local\And..

Unity 에서의 MVC 패턴

0.Model의 역할 게임을 이루는 데이터를 담당한다. Business Logic을 담당한다. ** 즉, Data가 바뀌는 Logic은 Model에서 짜야 한다. 유저 입력을 바탕으로 Controller에서 계산해서 집어넣는다? => X 그러면 안된다. 데이터가 바뀌면 OnChange를 실행하여 View Event를 실행한다. (View는 Model을 항상 Observing 하고 있다) 1. View의 역할 Model(Data)를 받아서 User에게 보여주는 역할을 한다. UI라고 생각하면 된다. 이미지, 텍스트 등 유저에게 보여주는 부분이다. Formatting, Rendering 2. Controller의 역할 유저는 View를 통해 Data를 보고 조작하려고 할 것이다. 데이터 조작을 위한 Inpu..

백그라운드에서 실행 [Unity]

에디터를 쓰다보면 레퍼런스를 보느라 다른 곳을 클릭할 때가 많은데 항상.. 유니티 게임이 멈춰있다. 난 레퍼런스를 보면서 플레이를 하고 싶은데 ㅠㅠ 해결 방법이 있다. Build Setting에서 Run In Background를 체크하면 이제 백그라운드로가도, 포커스가 바뀌어도 게임이 진행된다. 항상 쓰는 것은 아니지만 알아두면 좋다.

유니티 플레이 중 Recomplie 막는 방법 [Unity]

유니티에서 게임 플레이를 보면서 소스코드를 고칠 때가 있는데 소스코드만 고쳤다 하면 리컴파일 되면서 게임이 멈춘다. 정말 경악할 상황이다. 그래서 그것을 막는 옵션을 알려주려고 한다. Edit으로가서 Preference를 들어간다. 3가지 옵션이 있는데 1. 플레이 도중에도 컴파일이 되며 게임이 계속 실행된다. 2. 소스코드를 바꿔도 컴파일이 되지 않으며 게임이 끝나고서야 컴파일을 한다. => 이 옵션이 바로 그 옵션이다. 3. 리컴파일하기 위해 게임을 꺼버리는 옵션이다. 유니티 꿀팁이다. 생산속도가 늘어날 것이다.

구글 애드몹, GoogleAdmob id 빌드할 때마다 사라짐 [유니티, Unity]

유니티를 키거나 빌드 이후 뭔가 자꾸 에러가 뜨는데 id가 비어있어서 에러뜨는 경우가 무척 많다. 정말 화가난다 화가나. 분명 채웠는데?? 어느새 가보니 사라져있다. 아 왜 채워놨는데 사라지냐.. 그래서 영구적으로 채우는 방법이 있다. 프로젝트 폴더에 들어가서 GoogleMobileAdsSettings.asset을 찾는다. 그래서 여기다 id를 직접 넣는다. 그럼 된다. 광고 넣을 때마다 짜증나고 빌드할 때마다 짜증나지만 이걸로 해결 끝

Object Pooling 유니티에서 이용하기

Object Pooling은 많이 들어봤고 디자인 패턴 중에 가장 이해하기 쉬운 것이라고 생각한다. [Game Developer, 게임개발자/디자인패턴] - Object Pool, 오브젝트 풀, 객체 풀 [디자인패턴](최적화) 더군다나 Unity 2021에서는 이제 엔진에서 지원한다. 그래서 더 좋다. 공부할 때도 유니티의 native에서 지원하는 함수들을 바탕으로 하면 될 것이다. 1. ObjectPool을 이용하는 주체 using UnityEngine; using UnityEngine.Pool; public class Launcher : MonoBehaviour { [SerializeField] Bullet bulletPrefab; private IObjectPool bulletPool; privat..

Observer Pattern를 Unity에서 이용하기

우선 이전의 글을 읽으면 더 이해가 잘 될 것이다. [Game Developer, 게임개발자/디자인패턴] - Observer Pattern, 관찰자, 감시자 패턴 [디자인패턴] Observer Pattern을 쓰는 이유를 알고 써보자 1. Loose Coupling 2. Effectively Check 우선적으로 클래스 간의 커플링을 줄여주는 것이고 그 다음이 효율적인 실행이다. 예를 들어서 설명해보자. ** 레벨이 오르면 체력을 꽉 채워주고 싶다. => 레벨이 오르는지 확인해야함 => 레벨이 오를 때 체력을 갱신해야함 1. Level.cs using System.Collections; using UnityEngine; using UnityEngine.Events; public class Level : ..

Convert 그리고 Parse의 문화권 문제 [C#]

JSON 파일로 데이터를 받아오는 경우도 있지만 문자열로 데이터를 받아오는 경우도 있는데 최근에 문제가 생겼었다. 바로 C#에서의 parse 문제다. Convert도 마찬가지다. 그 중에서 float이나 double 같이 소수점이 있는 아이들이 문제가 많다. https://docs.microsoft.com/en-us/dotnet/api/system.single.parse?view=net-6.0 https://docs.microsoft.com/ko-kr/dotnet/api/system.convert?view=net-6.0#methods 본론으로 들어가보자 1. 문제 숫자에서 0.005를 float.parse 했을 때, 0이 되어버리는 현상 기존 서비스하던 국가가 아닌 다른 국가에서 나타나는 현상 2. 원인..

RectTransform과 Transform의 이해

유니티에서 가장 많이 다루는 컴포넌트가 무엇이냐?라고 물으면 이거라고 대답해도 절반은 맞을만큼 자주 쓰이는 녀석이다. 언뜻 배워서 Rect는 UI고 Transform은 인게임 아니에요? 라고 하는 경우가 많다. 하지만 그것은 일부분만 맞고 사실 2D Layout을 위한 것이다. 주로 RectTransform의 정의하는 사각형 안에 UI 요소를 집어넣기 때문에 그렇게 말하는 것이다. **다르게도 충분히 이용가능하다... 하지만 굳이..? RectTransform을 쓰진 않는다. **사실 Transform은 잘 알고 있을테니.. RectTransform 에 대해서 더 잘 알아보자 유니티의 공식 문서가 제공한다. 아래 내용 중 2가지가 RectTransform을 쓰는 이유라고 할 수 있다. 그렇다면 Trans..

728x90
반응형