씬 전환시 해당씬의 CinemachineConfiner로 교체하기
·
코드 및 공부/씬
유니티 버전 - 2022.3.17f1     목차들어가며현 프로젝트 세팅코드     들어가며해당 코드를 이용하여 할 수 있는것은 씬이 전환 될때 전환된 씬의 Polygon Collider 2D를 가져와서 Cinemachine의 Cinemachine Confiner 2D의 Bounding Shape 2D를 설정해 주는 것입니다     현 프로젝트 세팅1. 해당 스크립트는 가상 카메라(CinemachineVirtualCamera)와 같은 오브젝트에 있습니다2. 2D 환경입니다3. 메인씬은 변하지 않고 필요한 씬이 Addtive 모드로 로드 / 언로드 됩니다     코드// 전체 코드// 기능과 무관한 부분은 생략 하였습니다public class CinemachineConfinerChanger : MonoBe..
스프라이트 아틀라스(Sprite Atlas)
·
코드 및 공부/최적화
유니티 버전 - 2022.3.17f1     목차프로젝트 세팅개별 옵션스프라이트 참조     프로젝트 세팅Edit -> Project Settings -> Editor -> Sprite Packer -> Mode 에서 빨간 네모 박스가 쳐진 항목을 선택하여 줍니다  그런다음 Project에서 아틀라스를 만들어 줍니다     개별 옵션Allow Rotation : Sprite Atlas를 패킹할때 스프라이트가 회전할 수 있는지 여부 (공간을 효과적으로 사용하나 예기치 못한 이미지 출력 가능성 존재) Tight Packing : 스프라이트의 아웃라인에 따라 패킹하는 것 (공간을 효과적으로 사용하지만 경계가 흐린 이미지는 이미지간 침범 가능성 존재)      스프라이트 참조아틀라스로 묶은 스프라이트들을 드래그..
카메라 최적화
·
코드 및 공부/최적화
유니티 버전 - 2022.3.17f1     Multi Camera 지양각각의 카메라가 렌더링을 수행할 때 culling 작업과 Layer Filtering을 수행하기 때문에 성능 이슈 발생 가능성이 높음대신 시네머신 사용 권장     Occlusion Culling 과 LODOcclustino Culling을 이용 할 수 있는 상황에서는 사용하기, Occlustino Culling이란 카메라에서 가려지는 것들은 렌더링 하지 않는 것, 아웃도어 상황에서는 오히려 연산 비용 증가 LOD - 어느 정도 멀리 떨어진 오브젝트는 렌더링 하지 않아서 성능적 이득을 보는 것     Skybox  하늘을 안봐도되는 탑다운 게임은 Skybox가 필요하지 않기에 삭제     참고자료 (유니티 공식 유튜브)더보기https..
오디오 에셋 최적화
·
코드 및 공부/최적화
유니티 버전 - 2022.3.17f1     목차Load TypeCompresstion Format     Load Type 옵션Decompress on loadCompressed into memoryStreaming 파일 크기256kb > 1MB사용 시기재생속도(반응속도) 가 빨라야 하는 오디오(총 소리, 피드백에 사용되는 오디오 등)양 옆의 경우를 제외한 대부분의 경우배경 음악메모리압축을 풀어서 메모리에 올림압축 상태의 오디오를 메모리에 올림오디오를 디스크에서 직접 스트리밍하여 필요한 부분만 로드       Compresstion Format매우 짧은 클립은 ADPCM 사용대부분의 경우 Vorbis 사용
IsPointerOverGameObject()란?
·
코드 및 공부/입력 관리
유니티 버전 - 2022.3.17f1     목차IsPointerOverGameObject()사용 예시주의할 점     IsPointerOverGameObject()마우스 입력을 받았을때 게임 오브젝트or씬 위에서 클릭이 일어났는지 UI위에서 클릭이 일어났는지 반환해주는 메서드입니다, 이를 이용하여 마우스 클릭으로 특정동작을 수행해야할 때 UI를 클릭했다면 동작을 수행하지 못하도록 할 수 있습니다     사용 예시 if (p_context.phase == InputActionPhase.Performed) { if (InGame.isUIOpened) return; if (EventSystem.current.IsPointerOverGameObject()) ..
게임 에셋 판매 사이트
·
코드 및 공부/기타
유니티 버전 - 2022.3.17f1     목차gamedevmarketitch.iocraftpix     gamedevmarket 험블 번들에서 많은 양의 에셋을 묶음 할인 판매할때 구매하시면 됩니다(이것저것 들어있는 느낌)더보기https://www.gamedevmarket.net/ Game Assets for Indie Developers |GameDev Market is a marketplace for high quality, affordable 2D, 3D, GUI & Audio game assets, handcrafted by talented creators around the world.www.gamedevmarket.net     itch.io리소스 없이 개발하는것이 힘들다면 위와 마찬가지로..
OnValidate()을 이용한 SO 데이터 무결성 검증
·
코드 및 공부/데이터 관리
유니티 버전 - 2022.3.17f1     목차OnValidate()ValidateCheckItemCode결과     OnValidate()유니티에서 제공하는 이벤트 함수이고, 인스펙터 창에서 스크립트 컴포넌트의 속성을 변경할 때 호출됩니다관리하는 ScriptableObjectAssets이 많아질수록(이하 SO), 값을 빼먹거나 관리되지 못하는 SO 내의 데이터가 발생할 수 도 있습니다, 에디터 환경에서 OnValidate()를 이용하여 관리해보도록 하겠습니다   데이터의 일부만 가져왔습니다, 대표격으로 itemCode가 제대로 입력되어있는지 확인하기 위하여 아래와 같이 코드를 작성합니다public int itemCode;#if UNITY_EDITOR private void OnValidate()..
Instantiate시 오브젝트가 Addtive씬에 생기는 문제
·
코드 및 공부/씬
유니티 버전 - 2022.3.17f1     목차Instantiate시 오브젝트가 Addtive씬에 생기는 문제     Instantiate시 오브젝트가 Addtive씬에 생기는 문제 아래 Hierarchy를 보면 InGame(Clone)은 InGame씬에 정상적으로 생겼지만 InGame오브젝트가 만든 PlayerInfomationPopup(Clone)는 Farm씬에 생겼습니다, 이렇게되면 씬을 이동할때 Farm 씬이 언로드되고 다른 씬이 켜졌을때 팝업이 사라지게되어 곤란해질 것 입니다   이것을 해결하기 위해 간단하게 스크립트를 작성해줍니다제가 사용하는 씬은 메인 씬위의 다른 씬을 계속 해서 교체해주는 방식입니다, 그리고 빌드 인덱스는 Title이 0, 메인 씬이 1이기 때문에 빌드상의 첫번째인 InG..
유니티에서 픽셀 폰트를 TMP 폰트 에셋으로 만들기
·
코드 및 공부/기타
유니티 버전 - 2022.3.17f1     목차폰트 설정Font Asset CreatorAtlas     폰트 설정폰트 사이즈는 다운받으신 곳에서 지정해준 크기를 사용하거나 파일을 끌어왔을때 지정되어있던 사이즈를 사용합니다폰트의 인스펙터에서 Rendering Mode를 Hinted Raster로 바꿉니다폰트의 이름(다운로드 받은 폰트.ttf)은 영어로 지정합니다언급하지 않은 것은 사진을 따라가면 됩니다     폰트 설정해당 경로에 들어가 Font Asset Creator를 켜줍니다   Render Mode를 확인하고 Generate Font Atlas를 클릭합니다   생성 완료 후 저장 해줍니다Excluded characters가 0이 되어야 합니다, 만약 저 자리가 0을 넘어간다면 Atlas Reso..
씬의 이벤트 실행 순서(Awake, Start 이외)
·
코드 및 공부/씬
유니티 버전 - 2022.3.17f1     목차RuntimeInitializeOnLoadMethodSceneManager.sceneLoaded전체 정리(실행 순서)     RuntimeInitializeOnLoadMethod먼저 RuntimeInitializeOnLoadMethod 입니다, 해당 어트리뷰트를 사용하는 메서드는 반드시 스태틱이여야합니다, 자세한 설명은 공식문서를 참고 바랍니다, 실행순서는 가장 아래에 기술하겠습니다   더보기 Unity - Scripting API: RuntimeInitializeOnLoadMethodAttributeRuntimeInitializeOnLoadMethodAttribute class in UnityEngine / Inherits from:Scripting.Pr..