C\#프로 그래 밍 에서 흔히 볼 수 있 는 데이터 구조의 비교(Unity3D 게임 개발)

머리말
Unity3D 는 현재 가장 핫 한 게임 개발 엔진 으로 우 리 는 3 차원 비디오 게임,건축 시각 화,실시 간 3D 애니메이션 등 유형의 상호작용 내용 을 쉽게 만 들 수 있다.2D/3D 게임 개발 을 지원 하 며,불완전한 통계 에 따 르 면 현재 국내 모 바 일 게임 의 80%가 유 니 티 3D 로 개발 되 고 있다.
Unity3D 는 개발 과정 에서 C\#언어 를 가장 많이 사용 하기 때문에 C\#가 제공 하 는 일부 데이터 구 조 를 합 리 적 으로 사용 하 는 것 이 필요 합 니 다.합 리 적 인 데이터 구 조 를 선택 하면 개발 속 도 를 가속 화하 고 게임 의 운행 성능 을 향상 시 킬 수 있 습 니 다.데이터 구 조 를 불합리 하 게 사용 하면 게임 의 운행 성능 이 떨 어 지고 개발 의 복잡 도 를 높 일 수 있 습 니 다!
먼저 표를 통 해 자주 사용 하 는 데이터 구 조 를 보십시오.
C\#상용 데이터 구조
중국어
Array
일반 배열
ArrayList
배열 집합
List
범용 배열
LinkList
팬 링크
Stack
창고.
Queue
대열
HashTable
해시 시계
Dictionary
자전.
그리고 먼저 이 데이터 구조의 용법 을 대충 알 아 보 세 요.
2.데이터 구조 간 의 비교 와 일부 사용 안 열
1.배열(Array)은 일반적인 프로 그래 밍 에서 흔히 볼 수 있 고 가장 간단 한 데이터 구조 중 하나 로 세 가지 특징 을 가진다.배열 에 저 장 된 데 이 터 는 모두 연속 적 인 메모리 유닛 에 있 고 배열 의 요 소 는 모두 같은 유형 이 며 배열 은 아래 표 시 를 통 해 직접 접근 할 수 있다.단점 은 배열 이 연속 으로 저장 되 어 있 고 두 요소 사이 에 새로운 요 소 를 삽입 할 때 불편 하 다 는 것 이다.배열 을 만 들 때 길 이 를 지정 하거나 요 소 를 초기 화 해 야 하기 때문에 넘 치 거나 메모리 낭비 에 직면 할 수 있다.2.Array List 는 Array 가 가 져 온 단점 을 해결 할 수 있 습 니 다.크기 를 지정 하거나 요 소 를 초기 화 할 필요 가 없습니다.데이터 요 소 를 동적 으로 삽입 할 수 있 습 니 다.넘 치 거나 메모리 낭 비 를 고려 할 필요 가 없습니다.ArrayList 가 서로 다른 데이터 형식 을 저장 할 수 있 는 이 유 는 모든 유형 을 Object 형식 으로 처리 하기 때문에 사용 할 때 유형 이 일치 하지 않 는 문제 가 발생 할 수 있 기 때 문 입 니 다.이 는 ArrayList 가 유형 이 안전 하지 않 은 데이터 구조 로 읽 기와 쓰기(포장 박스 분해)를 자주 하 는 과정 에서 ArrayList 를 추가 로 사용 하여 성능 이 떨 어 질 수 있 음 을 나타 냅 니 다.그래서 개발 과정 에서 ArrayList 를 사용 하 는 것 이 적 습 니 다!
3.Array List 의 안전 하지 않 은 유형 과 박스 해체 의 단점 을 해결 하기 위해 List는 새로운 배열 유형 으로 도입 되 었 고 Array List 의 장점 을 계승 하 였 으 며 유형의 안전 을 확보 하 였 으 며 박스 해체 작업 이 필요 하지 않 기 때문에 List는 고성능 이기 때문에 List는 게임 개발 과정 에서 자주 사용 되 는 배열 유형 입 니 다.다음은 List의 간단 한 조작 입 니 다.
List Lstr=new List();
Lstr.Add("원소 1");/데이터 요소 삽입
Lstr[0]="원소 2";/데이터 요소 수정
Lstr.RemoveAt(0); // 데이터 요소 제거
Unity3D 게임 개발 에서 우 리 는 사격 게임 의 총알 이나 롤 플 레 잉 게임 의 NPC 등 게임 대상 을 List로 저장 할 수 있다.
4.LinkList의 특징 은 체인 중의 모든 요소 가 다음 요 소 를 가리 키 는 것 이다.이렇게 구 조 는 하나의 체인 을 구성 했다.특정한 데이터 요 소 를 삽입 하고 삭제 할 때 시간 복잡 도 는 모두 O(1)이다.
5.Stack(창고)의 특징 은 선진 적 인 후 출 이다.
6.Queue(대기 열)의 특징 은 먼저 나 가 는 것 이다.
7.저 는 게임 개발 에서 의 용법 을 통 해 하 쉬 표 의 사용 과 그 특징 을 소개 합 니 다.게임 개발 과정 에서 우 리 는 게임 캐릭터 의 ID 를 통 해 영웅 캐릭터 와 정확하게 일치 하 는 것 과 관련 되 기 때문에 모든 영웅 캐릭터 는 자신의 유일한 ID 를 가 져 야 한다.모든 영웅 캐릭터 의 ID 와 그들의 캐릭터 이름 이 일일이 대응 해 야 한다.그러면 우 리 는 하 쉬 표를 사용 하여 이런 데 이 터 를 저장 할 수 있다.만약 에 다음 과 같은 정보 가 있다 고 가정 할 수 있다.
번호
ID
캐릭터 이름
1
2059
아서
2
“2060”
달기
3
“ABC”
후예.
4
2061.5
궁 본 무장
해시 표 에 저 장 된 코드 는 다음 과 같 습 니 다.

Hashtable Hero = new Hashtable ();

     // Hero.Add (key,value);

     Hero.Add (2059,"  ");    //   1   

     Hero.Add (“2060”,"  ");    //   2   

     Hero.Add (“ABC”,"  ");    //   3   

     Hero.Add (2061.5,"    ");  //   4   

 

     //   key  value

     if (Hero.ContainsKey (“2060”)) {

      Debug.Log ("        ");

     } else {

     Debug.Log ("         ");

     }
상기 코드 를 통 해 해시 표 는 임의의 형식 값 을 key(key 와 value 의 유형 은 모두 object 형식)로 받 아들 일 수 있 음 을 알 수 있 습 니 다.이 는 해시 표 형식 이 안전 하지 않 음 을 나타 냅 니 다.
8.해시 표 형식 이 안전 하지 않 은 것 을 해결 하기 위해 서 우 리 는 Dictionary를 사용 하여 데 이 터 를 저장 할 수 있 습 니 다.위의 코드 를 아래 코드 로 바 꿀 수 있 습 니 다.

Dictionary<int ,string> Hero = new Dictionary<int, string> ();

// Hero.Add (int key,string value);

Hero.Add (2059,"  "); //   1   

Hero.Add (2060,"  "); //   2   

Hero.Add (2061,"  "); //   3   

Hero.Add (2062,"    "); //   4   

//    key(int)  value(string)

if (Hero.ContainsKey (2061)) {

Debug.Log ("        ");

} else {

Debug.Log ("         ");

}

해시 표 에 비해 사전 은 유형의 안전 을 보장 하지만 세계 에 완전무결 한 것 이 존재 하지 않 습 니 다.코드 도 마찬가지 입 니 다.사전 은 공간 을 통 해 시간 을 바 꾸 고 더 많은 메모리 비용 을 통 해 속도 에 대한 추 구 를 만족 시 킵 니 다.사전 을 만 들 때 사전 용량 값 을 입력 할 수 있 지만 실제 사용 할 때 이 값 이 아니 라 이 값 보다 작 지 않 은 최소 질 수 를 사용 하 는 것 이 실제 용량 이기 때문에 사전 용량 의 최소 값 은 3 이다.또한 실제 용량 이 있 으 면 색인 을 직접 실현 하 는 것 이 아니 라 두 개의 추가 Array 배열 을 만들어 간접 적 인 색인 을 실현 합 니 다.빈 사전 을 만 들 더 라 도 길이 가 3 인 두 개의 배열 이 수반 되 는 경우 가 많다.따라서 처리 한 데이터 가 많 지 않 을 때 사전 을 신 중 히 사용 합 니 다.
총화
게임 개발 과정 에서 많은 상황 에서 일반 배열 을 사용 하 는 것 도 가능 하 다.데이터 구조의 선택 은 데이터 의 크기 와 사용 장면 을 고려 해 야 이 데 이 터 를 합 리 적 으로 저장 하고 처리 할 수 있다.우수한 프로그래머 는 기계 운행 의 성능 을 고려 해 야 한다.일부 데이터 구 조 를 합 리 적 으로 선택 하면 프로그램의 운행 성능 을 향상 시 키 고 개발 의 복잡 도 를 낮 출 수 있다.
이상 의 지식 을 여러분 이 배 울 수 있다 고 느낀다 면 친구 들 에 게 공유 해 주 십시오.저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기