목록Unity(유니티) (72)
Deff_Dev
동적 생성이란 ?프로그램이 시작될 때, 미리 생성된 게 아니고 필요할 때 생성하는 것을 얘기한다. 동적 생성의 장점씬이 가벼워져서 씬 로딩이 빠름씬 변화가 없어서 Git 충돌이 거의 없음Prefab단위로 작업을 진행해 분업이 편리추후 대부분의 리소스 및 UI를 Addressable로 보내 빌드 용량을 낮추기 용이함와이어 프레임상 변경이 일어날 경우 간단하게 바꿀 수 있음동적 생성의 단점실행 시키전까진 확인이 어려움배치 변경 시 해당 프리팹을 찾아가서 일일이 수정해야함동적 생성의 활용랜덤 생성지정된 위치 생성UI 동적 생
파이프라인화면에 오브젝트를 그리는 과정을 제어하는 시스템으로, 단계적으로 나눠서 앞에 작업이 완료되면 다음으로 넘긴다. 조건에 맞는지 확인하고 다음 파이프(상태)로 이동시켜준다. 대략적인 과정 (세부적으로는 더 많은 작업이 있음)컬링절두체에 걸리는 것은 그려주고 절두체에 들어오지 않는 오브젝트는 성능 개선을 위해 그리주지않음렌더링카메라 절두체가 찍어준 화면을 2D 화면에 그려줌쉐이더 적용Shader : 작은 단위의 처리. 각각의 색상을 계산하기 위한 수학적 계산 및 알고리즘 포함현재 그림에 있는 것 처럼 초록색 공의 하나하나의 픽셀들의 각각의 색상을 계산, 빛이 반사되는 색깔도 계산Mesh 적용 : 개체의 모양을 정의각각의 색상 개선 까지 다 끝났다면 그것을 적용시켜 줄 모양을 정해줌현재 그림은 동그란..
Func반환 값이 있는 이벤트 함수이다. 사용하기 위해서는 Using System을 선언해야되고 아래와 같이 사용한다.Func operation 이런식으로 작성했을 때, operation은 float 형 변수 2개를 매개변수를 값고 float 값을 반환하는 함수를 구독할 수 있다.using System;using UnityEngine;public class Test : MonoBehaviour{ private Func test; private void Start() { test += Add; test?.Invoke(3.5f, 2.7f); } private float Add(float a, float b) { return a + b; ..
플레이어의 에임에서 레이를 쏴서 상호작용할 수 있는 오브젝트를 탐색하는데, 벽 뒤에 있는 오브젝트도 탐색이 되는 버그가 발생했다. Physics.Raycast(ray, out RaycastHit hit, maxCheckDistance, layerMask)기존의 코드는 에임에서 레이를 쏘고 layerMask에 일치하는 오브젝트를 hit에 저장한다.문제이 코드의 문제점은 간단했다.layerMask만 탐색을 하다 보니 default로 설정된 벽을 건너뛰고 그 뒤에 있는 상호작용 오브젝트를 탐색하게 되는 것이었다. 해결모든 레이어의 오브젝트를 탐색한 후, 레이어 비교를 통해 상호작용 오브젝트를 찾는 방법으로 수정했다.if (Physics.Raycast(ray, out RaycastHit hit, maxCheck..
Abandoned Asylum | 3D 도시 | Unity Asset StoreElevate your workflow with the Abandoned Asylum asset from Lukas Bobor. Find this & other 도시 options on the Unity Asset Store.assetstore.unity.com 위 에셋에 포함된 문 관련 오브젝트들을 사용하여 문 상호작용 기능을 구현해 보겠다.클래스 구성 및 오브젝트 탐색 문 상호작용 기능을 구현하기 위한 클래스 구조도이다.진행 중인 프로젝트를 기반으로 설명하므로, 클래스 구조가 다소 복잡할 수 있다. 입력 및 이벤트 실행 PlayerInputController에서 InputSystem을 이용하여 상호작용 키를 입력을 받..
유니티에서 Text UI를 개발할 때, TextMeshPro를 많이 사용한다. 이때, 텍스트의 OutLine,Underlay 등을 설정하고 싶을 때, Material에서 OutLine 등을 설정하게 된다면 모든 해당 폰트를 사용하는 모든 Text가 바뀌게 된다. 왜 그럴까 ? 기본적으로 TextMeshPro의 폰트는 Material를 공유하기 때문에 Material 값이 수정되면 해당 폰트를 쓰는 모든 텍스트들이 변하는 것이다. 그럼 폰트를 복사해서 여러개 만들면 될까 ? 기본적으로 SDF 파일은 한글 범위를 포함할 경우 용량이 크고 무겁기 때문에 게임 성능에 문제를 미칠 수 있다.(특히 모바일 게임에서는 이 문제를 필수적으로 해결해야한다.) 그렇기 때문에 텍스트의 Material를 인스턴스화하여 M..
법선 벡터 : 특정 지점에서 표면에 수직으로 뻗어 있는 벡터 법선 벡터를 이용하여 점프대를 만들어보자 위와 같이 점프대를 만들 때 법선 벡터가 왜 필요할까 ? [Range(0f,15f)][SerializeField] private float jumpPadPower; private void OnCollisionEnter(Collision other) { if (other.gameObject.CompareTag("Player")) { Rigidbody rigid = other.gameObject.GetComponent(); rigid.velocity = Vector3.zero; rigid.AddFor..
게임 개발 할 때, 가장 많이 사용하는 디자인 패턴 중 하나인 싱글톤 패턴을 사용한다고 하면 public static GameManager _Intstance; private void Awake() { _Intstance = this; } 이런식으로 많이 사용했을 것 이다. 예외 처리, 프로퍼티,DontDestroyOnLoad 설정 등을 포함한 다양한 기능을 구현할 때, 싱글톤으로 선언된 클래스가 많아진다면 긴 코드를 각각의 싱글톤으로 선언한 클래스마다 작성해줘야한다. 이 과정은 중복된 코드를 많이 생성하게 되고 유지 보수적인 측면에서도 좋지않다.(하나의 기능을 추가/삭제할 때 싱글톤으로 선언된 모든 클래스를 다 수정해야한다.) Generic Class를 이용해 이 문..