일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- UniRx
- addressable
- 최적화
- equals
- 플러그인
- Unity
- Addressable System
- ReferenceEquals
- Reflection
- Android Plugin
- Strategy Pattern
- 디자인 패턴
- ScriptableObject
- Zenject
- c#
- 1인 개발
- 인앱 결제
- 게임 개발
- sprite atlas
- ==
- Boxing
- design pattern
- 스프라이트 아틀라스
- Post Processing
- Abstract Factory Pattern
- 포스트 프로세싱
- Unboxing
- Today
- Total
목록Unity (27)
One_KWS
서버에 에셋 업로드하기 Remote Build를 통해 에셋을 서버에 업로드하고 런타임중 서버로부터 에셋을 로드하여 사용할 수 있다. AWS S3 버킷 생성 AWS 홈페이지에서 모든 서비스 - 스토리지 - S3를 클릭한다. 버킷 만들기를 클릭하여 새로운 버킷을 생성하고 아무 파일이나 업로드를 한 후 클릭하면 객체 URL을 볼 수 있다. 해당 객체 URL에서 버킷이름까지만 복사한다. Addressable Group 생성 서버로 업로드할 어드레서블 그룹을 생성한 후 이전 예제에서 만들어 놓은 에셋을 새 그룹으로 옮긴다. Addressable Profile 생성 Window/Asset Management/Addressables/Profiles를 클릭하여 Addressable Profiles 창을 띄운다. 처음에..
Addressable Profiler 어드레서블은 에셋의 실시간 디버깅을 확인할 수 있는 프로파일러를 제공한다. Window - Asset Management - Addressables - Event VIewer를 클릭하여 프로파일러를 열 수 있다. 프로파일러를 사용하려면 AddressableAssetsData 폴더 안에 있는 AddressableAssetSettings에서 Send Profiler Events를 체크해야 한다. 에셋을 로드하면 프로파일러에서 실시간으로 프레임, 모노힙, 생성된 큐브의 수와 생성된 시점 등을 확인할 수 있다. 에셋 언로드 어드레서블을 이용하여 로드된 에셋들은 메모리에서 해제시키지 않으면 계속 남아있게 된다. 따라서 로드된 에셋을 다 사용하고 나면 메모리에서 해제시켜줘야 한..
Asset Bundle과 Addressable 에셋 번들은 앱 컨텐츠를 분리하여 앱 초기 다운로드 크기를 작게 유지할 수 있으며 동적으로 에셋들을 로드하기 때문에 추가적으로 업데이트시 앱을 재설치할 필요 없이 컨텐츠만 수정, 추가, 삭제하여 앱을 업데이트할 수 있는 장점이 있다. 하지만 이러한 장점들에도 불구하고 에셋 번들은 구현하기가 어렵고 많은 리팩터링과 커스텀이 필요하다는 단점이 있다. 이 단점들을 해결하기 위해서 나온 것이 Addressable System이다. Addressable 설치 어드레서블을 설치하는 것은 간단하다. Package Manager에서 어드레서블을 찾아서 설치하면 끝난다. 어드레서블을 설치하면 Window - AssetManagement- Addressables 메뉴가 만들어..
대미지 표시 플레이어 또는 몬스터가 공격 받았을 때 대미지 표시를 해주는 기능을 추가했다. Text는 Text Mesh Pro(TMP)를 사용했고 텍스트 애니메이션은 DOTween을 이용해 구현했다. Scene에 Text Mesh Pro를 생성해주고 위치와 크기를 조절해주었고 FloatingText라는 클래스를 만들어 붙여주었다. 텍스트가 위로 튀어 오르는 모습을 구현하고 싶어서 DOTween의 DOJump를 이용했다. 거기에 DOShakeScale을 붙여 텍스트가 튀어오르면서 출렁거리는 듯한 느낌을 주었다. 이 두가지의 Tween들을 합쳐서 보여지게 하기 위해 Sequence를 이용했다. public class FloatingText : MonoBehaviour { private readonly Vec..
일주일에 하나는 쓰려고 했는데 저번주에 쓰지 못했다.. 짧더라도 매주 꾸준히 글 하나씩은 쓰도록 노력해야겠다. 일지가 아니더라도 공부한 내용들도 정리해서 올려야겠다. (Velog랑 Notion에 정리했던 것들도 옮겨야되는데 언제 옮기지 ..) 플레이어 공격 수정 기존에 구현했던 플레이어의 공격이 다른 행동들(이동, 대쉬)과 이어질 때 자연스럽게 이어지지 않은 문제와 간혹 공격 중에 공격이 먹통되는 문제가 있어서 이것을 수정하는 작업을 진행했다. 수정하는 김에 공격 애니메이션 모션과 이펙트도 수정했다. PlayerCombat 공격 부분 로직은 전부 수정했다. AnimatorStateInfo를 이용하여 현재 애니메이션 상태를 체크하여 다음 공격으로 넘어가게 했다. currentCombo 값이 0이라면 att..
Enemy 몬스터의 클래스 구조도 플레이어와 비슷하다. 각 행동들은 IBehaviour 인터페이스를 구현하고 있고 EnemyController에서 행동들을 제어한다. EnemyController PlayerController와 마찬가지로 몬스터의 공격과 이동을 제어한다. 몬스터는 일정 범위 내에 플레이어가 들어오면 공격을 해야 하기 때문에 Physics.SphereCastAll를 이용하여 범위 내에 플레이어가 들어오는지 체크하도록 했다. [SerializeField] private float sightRange; ... private Transform FindTarget() { var hits = Physics.SphereCastAll(transform.position, sightRange, Vector..