배열과 리스트
배열 - 고정적인 구조
데이터 삽입 삭제 비효율적
데이터 크기가 고정일때 씀
리스트 - 배열과 유사하지만 크기가 동적으로 변하는자료구조
데이터를 추가하거나 삭제할 수 있어 배열보다 유연하다
데이터 크기가 변동될때 씀
그럼에도 특정포인트에서는 배열이 효율적인 구간이 있을것임.
배열의 메모리구조
시작의 주소가 있다. 그래서 첫 주소부터 한칸씩이므로
인덱스 0부터 시작한다.
리스트는 내부적으로 배열을 사용
데이터가 추가될때 배열의 크기를 자동으로 조정한다.
메모리 재할당이 발생할 수 있음.
-> 부하가올수있는데, 이것은 로딩씬등에 몰아넣는등 우회하는 ux를 고려해서 코딩하면된다.
배열은 Length를 쓰지만
리스트는 Count를 쓴다.
Remove는 값을 주는데
가장 먼저발견되는게 삭제된다.
List<int>list = new List<int>(100); //초기용량 100설정
list.Remove(10) 하면 가장 먼저 있는 10 제거
list.Add(10) 리스트에 10 추가
for문장은 실제 자료구조에 접근하므로
지금 만지는것은 그친구다.
foreach문은 꺼내와서 사용하기때문에
복사값이다.
전체 순환만 필요하다면 foreach문을 사용하면된다.
메모리관리와 가비지컬렉션
배열: 고정크기이므로 메모리 낭비가 발생할수있음
리스트: 동적크기이므로 TrimExcess()메서드를 사용하여 필요없는 메모리를 해제할수있음.
실제로 쓰다보면 복합구조가많이쓰임
딕셔너리 안에 리스트가 들어간다거나..
리스트안에 배열이들어간다거나...
----------
몬스터 데이타
그냥 몬스터클래스
각종필드
체력
공격력
...
몬스터 서브클래스 데이타 : 몬스터데이타를 상속받음
도적... 해적... 등등
이것들이 위의 수치들을 수정해서
전체적으로 리스트컬렉션에 담아서 소환하는 방식을쓸때
몬스터데이타타입으로 담는것이 수월하다.
이때는 서브클래스의 중복프로퍼티를 선언해두면
몬스터데이타타입으로 접근할때 몬스터프로퍼티로 접근하기때문에
빈깡통이다..
따라서 서브클래스의 생성자또한 베이스클래스를 상속받도록
public 서브클래스타입 ( ) : base( 필드 : 값, 필드2 : 값2 )
이런식으로 받아주는형태로 작성해주면
몬스터데이타 타입으로 필요한 값들을 base쪽으로 다시 초기화해주기때문에
해당 몬스터데이타를 상속받은 서브클래스 객체를 생성할때
몬스터데이타 의 초기화된 값으로 생성된다.
서브클래스 자체의 프로퍼티는 말그대로 자체 창구이고 아무것도 할당되지않았다면
그냥 불러와도 null상태일뿐이다.
'Unity 개발 공부' 카테고리의 다른 글
| [내배캠] 본캠 17일차. 알고리즘, 정렬알고리즘, 선형 탐색알고리즘 (0) | 2025.04.29 |
|---|---|
| [내배캠] 본캠 15일차. 상속의 원리, 객체지향 (1) | 2025.04.25 |
| [내배캠] 본캠 13일차. 문자열 처리, 깃허브세팅법,제너릭T와 패턴매칭, 생성자 (5) | 2025.04.23 |
| [내배캠] 본캠 12일차.스테이트 머신, 스테이트패턴, FSM, 제너릭 T, 디자인패턴종류 (0) | 2025.04.22 |
| [내배캠] 본캠 11일차.전역설정,싱글톤,의존성주입, 용어정리 (0) | 2025.04.21 |