본문 바로가기

분류 전체보기

(82)
제네릭이란 데이터 요소 타입을 확정하지 않고 데이터 타입 자체를 타입 파라미터로 받아들이도록 클래스 내부의 멤버 변수의 타입을 일반화시킨 클래스입니다. 제네릭은 여러 데이터 형식에서 동일한 로직을 구현할 때, 컬렉션 타입에서 다양한 데이터 형식을 저장하고 관리할 때, 데이터 형식에 따라 다른 연산을 수행해야 할 때 objec타입을 사용했을 때의 문제점을 해소할 수 있습니다. 즉 불필요한 클래스 구현을 방지하고, 타입 검사가 엄격하므로 애플리케이션 배포 전 미리 문제를 해결할 수 있고, 명시적 변환보다 속도가 빠르므로 코드의 재사용성과 유연성이 향상됩니다.
23.11.15 Unity : 오브젝트 풀링 오브젝트 풀링은 오브젝트의 Pool, 즉 웅덩이를 만들어 놓고 그 안에서 필요할 때마다 오브젝트를 꺼내서 사용하는 것을 뜻합니다. 오브젝트를 생성하고 파괴하면 메모리의 할당과 해제가 되고, 이는 CPU가 할 일이 늘어나게 된다는 것입니다. 따라서 사용한 오브젝트를 파괴하지 않고 비활성화 해서 Pool안에 넣어놓고 필요하면 다시 사용하는 것이 오브젝트 풀링을 입니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PoolManager : MonoBehaviour { public static PoolManager Instance; List[] pools; Dict..
23.11.14 ScriptableObject : 플레이어 위치 찾기 몬스터가 플레이어를 추적하는 기능을 만들 때 플레이어의 위치를 찾기위해서 Find 메소드를 사용하거나 GameManager같은 매니저가 플레이어를 미리 참조하고 있고 그걸 받아올 수 있지만, ScriptableObject를 사용하여 위치를 찾을수 있다. PlayerPosition.cs 플레이어의 위치를 필드로 가지는 ScriptableObject이다. using UnityEngine; [CreateAssetMenu(fmenuName = "PlayerPosition")] public class PlayerPosition : ScriptableObject { public Vector3 position { get; set; } } Player.cs 플레이어..
23.11.13 FSM : 유한상태머신 FSM(Finite State machine)은 다음과 같은 특징을 가집니다. 자신이 취할 수 있는 유한한 갯수의 상태들을 가진다 그 중에서 반드시 하나의 상태만 취한다 현재 상태는 특정 조건이 되면 다른 상태로 변할 수 있다 가능한 상태들의 집합과 각 상태들의 전이 조건으로 정의 될 수 있다 FSM을 사용하는 이유로는 가능한 상태들을 명확히 규정할 수 있다 상태 중복을 피할 수 있다 전이들을 명확하게 규정할 수 있다 따라서 기계의 동작을 분명하게 규정할 수 있다 FSM에 기반한 객체를 만든다면, 안정적인 작동을 보장할 수 있다 비동기 씬 로딩 비동기 씬 로딩을 위해서 SceneManager에서 LoadSceneAsync를 사용하면 구현 할 수있다. 유니티에서 Scene이 로드되면..
23.11.10 다음주 발표가 있어서 발표자료를 만들었습니다.
23.11.09 메인씬에 UIManager와 인벤토리, 창고 기능을 넣고, 저장기능을 합쳤는데 자잘한 오류가 발생하여 수정하였습니다.
23.11.08 장비 아이템 스크립트를 인벤토리와 창고에 맞게 다시 수정하였습니다.
23.11.07 인벤토리 제작이 끝나서 창고 기능을 제작하는데 인벤토리 스크립트를 재사용하여 만들기 위해서 인벤토리와 창고에서 공통으로 사용되는 기능을 빼서 스크립트를 따로 만들고 인벤토리 스크립트와 창고 스크립트가 상속받아서 각자의 기능을 구현하였다.
배열과 List, ArrayList, Dictionary 의 차이점 배열은 특정 타입의 연속된 메모리를 정적으로 선언하여 관리할 수 있다. List는 특정 타입의 연속된 메모리를 동적으로 관리하며, 크기가 부족할 경우 2배로 할당하고 연속되게 할당할 메모리가 없다면 새로운 메모리 공간으로 이주하여 연속된 메모리를 할당한다. ArrayList는 불특정 타입의 List이다. 불특정 타입이라 편하지만, 넣고 뺄 때 느리다. Dictionary는 특정 타입을 키과 밸류로 관리하는 방식이다. Dictionary는 어떻게 구현해야 하나요? Dictionary는 불변값인 key와 가변값인 value로 쌍을 이뤄 데이터를 저장합니다. 또한 중복키를 허용하지 않고 그 이전값에 덮어쓰기하므로 ContainsKey를 사용해 이미 존재하는 키인지 확인해야 합니다. Dictionary 검색이 ..
박싱과 언박싱이란 값 타입을 참조 타입으로 변환하는 것을 박싱이라고 하며, 참조 타입을 다시 값 타입으로 변환하는 것을 언방싱이라고 합니다. 박싱을 할 때 스택에 있는 메모리를 힙으로 이동하게 되고 아예 새로운 객체를 만들어 내야 하므로, 이 과정에서 오버헤드가 발생하여 성능이 저하됩니다. 또한 언방식을 할 때도 박싱과 같은 문제점이 있습니다.