전체 글 164

2016.10.27. 19:59~

ObjectManager.cs // CreateObject_Test 프리팹으로 저장한 enemy불러와서 하이라키의 자식으로 넣어주려고만듬. 리소스를 로드해서 생성 1.프리팹 로딩 GameObject prefab = Resources.Load("Prefabs/Enemy") as GameObject; ->그냥 public GameObject로 넣어줘도 된다. 2.프리팹이 유효한 경우, 새로운 오브젝트 생성. GameObject newObj = GameObject.Instantiate(prefab) as GameObject; 3.생선한 오브젝트 부모설정하고 newObj.transform.parent = gameObject; //스크립트가 부모한테 붙어있음. ----------------------------이..

Dictionary<TKey, TValue>.ContainsKey메소드

Dictionary.ContainsKey메소드 2016.10.19. 17:31 [c#] public bool ContainsKey( TKey key ) [c++] public: virtual bool ContainsKey( TKey key ) cs Dictionary에서 특정키가 있는지 여부를 확인한 결과를 반환한다. 지정된 키가 있으면 true, 아니면 false. public class DictionaryEx{ public static void Main(){ IDictionary openWith = new IDictionary(); if (!openWith.ContainsKey("ht")) { openWith.Add("ht", "hypertrm.exe"); Console.WriteLine("Value..

String

String 2016.10.19. 17:00 String클래스는 많이 쓰이고 좋은 메소드(기능)를 많이 가지고 있지만, 메모리를 과소비한다. String객체의 경우 처음 초기화된 데이터에 변화가 생기면 기존 것을 재활용하기 보다는 새 것을 찾고 쓰지 않는 데이터는 가비지 컬렉터에 의해 사라지지만 그전까지는 계속 메모리에 남아있기 때문에 메모리에 영향을 준다. ->속도적인 측면에서 개선된 stringBuffer, stringBuilder 속도 Builder > Buffer 1.stringBuilder append(): 문자열추가 insert(): 특정위치에 문자열추가 delete(): 문자열삭제 deleteCharAt(): 특정문자 하나 삭제 2.stringBuffer String메소드는 String형 변..

IEnumerable, IEnumerator

IEnumerable, IEnumerator 2016.10.19. 16:32 IEnumerable 내부에 GetEnumerator()추상함수를 포함하고 있으며, 이 함수를 이용해서 IEnumerator의 객체를 얻을수 있다. IEnumerator 컬렉션에서 단순하게 반복할 수 있도록 지원하는 열거자를 노출하는 인터페이스 현재 커서 위치에서 데이터를 추출하는 기능을 지원하며 순 방향으로 검색하는 기능 또한 제공하고 있다. 또한 커서를 데이터 집합의 시작점으로 돌리는 것도 가능하다. IEnumerator 컬렉션에서 단순하게 반복할 수 있도록 지원하는 열거자를 노출하는 인터페이스 + GetEnumerator() 컬렉션을 단순히 반복하는 열거자를 반환해 주는 역할 || 해당 컬렉션의 반복 using System..

ArrayList

2016.10.18. 19:59 데이터를 삽입했을 때 순서대로 삽입되며 중간 삽입이나 삭제 또한 가능하다. ArrayList클래스의 함수를 통해 객체저장, 삭제수정, 검색이 가능하다. public class ArrayList: IList, ICollection, IEnumerable, IClonable Add(" "): 데이터삽입 AddRange(): ArrayList 의 끝부분에 통째로 삽입 Insert(int, " "): 넣고자 하는 인덱스 번호에 데이터 삽입 Remove(" "): 해당 데이터제거 RemoveAt(int): 인덱스로 데이터삭제 RemoveRange(int, int)" ArrayList에서 요소의 범위를 제거 Sort(int, int, null): 정렬할 첫번째 위치, 정렬할 개수 p..

해시테이블_개선

1. 해시테이블 구조 개선 완벽한 해시함수는 없어서 언젠가는 충돌한다->충돌해소방법 필요 ->일반적으로는 내부구조차원에서 충돌처리 (내부구조 변경 안하고 충덜처리가 더 좋다!) 1) Linked overflow : 해시테이블의 각 칸은 연결리스트이다. Linked overflow 테이블에 항목을 삽입. 테이블은 크기가 10이고, 해시함수는 나머지 연산일 때 다음의 플레이어를 테이블에 삽입한다. player1: 345,752 player2: 546,182 player3: 798,500 player4: 123,430 ->나머지연산적용(해시함수적용): 2, 2, 0, 0 player3,4 player1,2 0 9 !-> 이 방법을 사용하면 충돌을 전혀 걱정할 필요가 없다. 해시들이 충돌한다고 해도, 나중 자료..

해시테이블_충돌

1. 충돌 해시테이블을 구현 할 때 주로 해결해야 할 문제가 충돌문제. 나머지를 구하는 해싱의 경우, 키가 14와 10,564이면 나머지가 4로 충돌한다. 충돌을 해소하려면 해시함수를 사용하거나 충돌이 문제되지 않는 방식으로 테이블을 수정해야한다. (1.개별자리수 더하기, 2.문자열의 해싱) 2. 해시함수 1)개별 자리수 더하기: 간단한 해시함수는 각 자리를 모두 더하는것. ex) 143,674와 645,394 1+4+3+6+7+4 = 25 6+4+5+3+9+4 = 31 ->충돌이 발생하지는 않지만 배열의 크기 10을 넘어간다. 해결방법 (1)배열의 크기를 54로 하는것(6자리:9+9+9+9+9+9+) (2)이중해싱으로 키 값을 특정한 방법으로 해싱을 하고 그 해싱된 값을 한번 더 해싱 !-> 개별자리수..

해시테이블(hash table)

2016.10.18. 18:36 1.희소자료(sparse data) 게임 안에서 각 플레이어를 식별번호(KEY)로 구별한다. 각 키는 고유하여 동일한 키를 가지는 플레이어는 없다. 또, 0~ 1000,000 사이의 정수로 무작위 결정된다. EX) player1 : 945,253 player2: 433,455 player3: 36,549 player3(36,549) player2(433,455) player1(945,253) 0 100,0000 -> 1000,000개의 색인들 중 3개의 색인만 쓰여서 무지 낭비. 배열이 아닌 연결리스트로 구현해도 연결리스트 자체가 접근속도가 느려서 별 소용없다. !-> 그래서 해시테이블 사용! 키 기반 희소자료를 적당한 크기의 공간에 빠르게 저장할 수 있다. '특정한' 하..

Stack<T>

Stack 2016.10.04. 19:03 크기가 변하는 LIFO(후입선출) 방식의 컬렉션을 나타낸다. Push 개체를 Stack의 맨 위에 삽입 Pop Stack 의 맨 위에서 개체를 제거하고 반환 Peek Stack의 맨 위에서 개체를 제거하지 않고 반환 using System; using System.Collections.Generic; namespace StackTEx { public class Enemy { public string Name { get; set; } public int Level { get; set; } public int HP { get; set; } public int Exp { get; set; } public void printEnemyInfo() { Console.Wri..

Queue<T>

Queue 2016.10.04. 19:00 크기가 변하는 선입선출(FIFO) 방식의 컬렉션을 나타낸다. Enqueue 개체를 Queue의 끝 부분에 추가 Dequeue Queue의 시작 부분에서 개체를 제거하라고 반환 Peek Queue의 시작 부분에서 개체를 제거하지 않고 반환. using System; using System.Collections.Generic; namespace QueueTEx { public class Enemy { public string Name { get; set; } public int Level { get; set; } public int HP { get; set; } public int Exp { get; set; } public void printEnemyInfo() ..