전체 글 122

2024 10 28 TIL

NavMesh.SamplePosition() 메서드의 정보 주어진 위치에 가장 가까운 Mesh 위치를 찾기 위해 사용되는 메서드 여기서 Mesh란 3D 컴퓨터 그래픽스에서 사용되는 용어로 객체의 표면을 구성하는 다각형 집합이라고 합니다.NavMesh 에서는 게임 오브젝트들이 이동할 수 있는 경로와 영역을 정의하는데 사용되는 듯 합니다.일단 이 메서드를 사용하여 설정한 경로위치를 탐색하고 탐색된 오브젝트에 접근할수 있다라고 생각하려합니다.  매개변수 설명Vector3 SourcePosition : 샘플링 시작위치 out NavMeshHit hit : 샘플링 결과를 저장할 변수 float maxDistance : 샘플링할 최대 거리int areaMask :  샘플링할 영역 설정  (NavMesh.AllAre..

TIL 2024.10.28

AI 네비게이션

과거엔 직접 로직을 작성하여 오브젝트가 스스로 움직이는 것을 구현하였다면 지금은 그럴필요없이 유니티에서 제공하는  AI 네비게이션을 사용하여 구현하는 것이 더 효율적이라고 합니다.   AI 네비게이션을 사용하기 위해선 먼저 패키지를 다운 받아줍니다.패키지 설치가 완료 되었다면 Windows 창에 AI항목이 새로 나타나게 됩니다. 여기서  Navigation (Obsolete) 를 클릭제 경우엔 인스펙터창 옆에 새로 탭이 생겼습니다. 일단 먼저 간단하게 살펴보자면 Agents 는 움직이는 오브젝트에 붙이는 것Areas 는 지형에 대한 레이어를 설정Object에서 이러한 지형 지물에 대한 레이어를 설정해줄 수 있다. bake 창에사 지형을 대상으로 bake를 하게 되면 움직일 수 있는 곳은 파란색으로 설정되..

자료 관리 2024.10.27

2024 10 27 TIL

slotPanel을 Transform으로 지정한 이유는 Transform에 위치 회전 스케일 값 뿐 아니라 부모-자식 상태 저장도 포함되어 있기 때문이다. (정보 출처 -https://docs.unity3d.com/kr/2021.3/Manual/class-Transform.html)  GameObject의 자식 Object 갯수를 구하는 childCount 를 써서 SlotPanel 안의 슬롯UI의 갯수를 계산하는 방법슬롯의 공간을 확보하였으니 데이터값을 불러오기 위해 slotPanel.Gechild(i)를 하여 i번째 자식 컴포넌트의 ItemSlot 스크립트 데이터를 받아오는 것 또한 예상치 못한 접근인거같다. 받아온 데이터를 기반으로 index의 값과 선언만 되어있는 UIInventory의 정보를 이..

TIL 2024.10.27

2025 10 25 TIL

강의 진도는 현재 11강 현재 피로한 상태라 오늘은 일찍자고 아침에 일어나서 배운 내용을 다시 정리할 예정이다. 오늘 배운 범위는 광원을 이용하여 낮과 밤을 구현 하는 것과 인터페이스의 활용 레이캐스트를 사용하여 물체와 상호작용 구현등을 배웠고 내일 진도를 나가기 전 애니메이션 커브관련 내용을 따로 정리하면서 기능을 다시 살펴보아야 다음에 사용할 때 어려움이 없을 것 같다.

TIL 2024.10.25

Light (Unity)

유니티 3D에서 빛 효과를 사용하고 싶을 때 광원을 사용합니다.   (태양과 횃불 등) 광원을 생성하고 싶을 땐 Hirerarchy 창에서 Light를 새로 만들어도 되고 상단의 GameObject 창에서 찾을 수도 있습니다.광원도 여러가지 종류가 있는데  먼저 점 광원(Point Light) : 생성하면 모든 방향으로 균등하게 빛을 발산하는 광원입니다.구형의 범위에 균등하게 빛을 발합니다.방향성 라이트 (Directional Light) : 무한히 멀리 위치하여 한 방향으로만 빛을 발산하는 광원입니다.지금 프로젝트에서 태양 또한 방향성라이트로 구현이 되어있습니다. 스포트라이트 (Spot Light) : 씬의 한 점에 위치하여 원뿔 모양으로 빛을 발산하는 광원면 광원(Area Light) : 표면 영역 ..

자료 관리 2024.10.25

out ref 키워드

void Update() { RaycastHit hit; if (Physics.Raycast(ray, out hit, rayDistance, layerMask)) { if (hit.collider.gameObject != curInteractGameObject) }} out 키워드는 매개변수를 사용하면서 같은 메서드 내에 선언된 변수에 이 매개변수를 반환해주고 싶을 때 사용된다.그리고 보통 사용할 때는 두개 이상의 반환값을 돌려받고 싶을 때 사용이 된다고 한다.ex)   (out int i , out int j )  (벌써 반환되는값이 두개) 코드블록의 내용을 보면 이미 코드의 흐름에선 hit 변수는 아무값도 할당되지 않고 지나갔지만 out hit 매개변수를 통해 조건에 부합할 때..

자료 관리 2024.10.25

2024 10 24 TIL

공부 방식을 바꿔보려한다. 지금까지는 강의 내용을 따라하면서 진도를 나갔다면 강의 진도를 먼저 빼고나서 다시 돌아보며 따라하는 식으로 해본다. 따라하는 과정에서 얻은 지식들을 자료로 정리해가면서 진도를 뺄 예정이다. 오늘 생긴 오류: 강의와 같은 방식으로 스크립트를 만들고 실행해보았는데 입력값이 Null이 되어 오류가 발생하였다.스크립트 내에 종단점을 찍어 디버깅을 하는 방식으로 오류가 나는 스크립트에서 싱글톤 변수를 확인해봤고CharacterManager.Instance.Player 부터 값이 Null이 발생하는 것을 인지하였다.해당 오류의 원인은 start 함수로 싱글톤에 값을 차례로 넣는 방식인데 실행주기가 꼬여버려중간에 Null이 발생하였던 것이다. 일단 Player의 start 함수를 더 빠르게..

TIL 2024.10.24

2024 10 23 TIL

새로운 조와 통성명을 하고 유니티의 심화 단계를 다루게 되었다.이번 프로젝트는 3D 영역이라 새로운 영역에 대한 호기심과 또 걱정이 공존한다. 하나하나 차근히 배우고 싶어서 강의진도를 아직 거의 못뺀 상태다.지금 하고 있는 부분은 InputSystem을 이용하여 3D에서의 움직임을 구현하는 단계 강의를 보되 스스로 만들어보려고 노력하고 또 Vector3 와 Vector2를 다루는 것을 연습중이다. 이번 팀의 인원들이 대부분 스탠다드 이하이기에 현재 목표는 과제의 퀄리티도 중요하겠지만  배움을 중점으로 깨우치는 쪽으로 해보고 싶다.   간단하게 TIL 작성을 마치고 다시 강의 내용을 구현해보러

TIL 2024.10.23

시간 복잡도

오늘 특강에서 자료구조에 대한 설명을 시간복잡도라는 개념을 통해 설명을 해주셨는데 시간복잡도라는 개념에 대해 알지 못해 많이 당황하였던 것 같다. 대략적인 맥락으로 보았을 때 시간복잡도에 따라 효율이 달라지므로 리스트를 너무 과신하지 말자는 내용이었던 것 같은데 전체적인 내용을 이해하지 못하여 저녁을 먹고나서 튜터님께서 따로 시간을 내주셔서 추가 강의를 해주셨다.    다시 듣고보니 시간복잡도라는 것은 자료구조를 통해 어떠한 값을 찾을 때에 복잡성에 관한 추정값으로  정확한 값이 아닌 평균적인 근사값인 것 같다. 지난 C# 강의 때 과제를 최우선으로 하여 강의 진도를 다 못 뺀 것이 이번 특강에 대해 이해가 부족했던 원인이었다. 그래서 지금이라도 조금이나마 강의를 보면서 알고리즘의 개념과 시간 복잡도에 ..

자료 관리 2024.10.23

오브젝트 풀링

Object Pooling 방식은 오브젝트를 미리 생성해두어 비활성화 시켜두었다가 적절한 때에 활성화시켜 동작시키는 형태입니다. 왜 Object Pooling 을 쓰는가Object Pooling 을 쓰는 이유는 오브젝트를 생성하고 파괴하는데 드는 동작비용이 있기 때문입니다. public class ObjectPool : MonoBehaviour{ // 오브젝트 풀링을 할 게임오브젝트 프리팹 public GameObject prefab; private List pool = new List(); private int poolSize = 300; // 최소 300의 반복의 조건을 받음 void Start() { for (int i = 0; i 처음 만들 때오브..

자료 관리 2024.10.23