본문 바로가기
Unity & C# Basics

C#책 공부일지 : Basics2

by 나만두 2023. 7. 27.

 

 

기본기부터 탄탄하게 다지자라는 마인드로 '유니티로 배우는 C#프로그래밍' 책을 구매함 ㅇㅇ

 

 

메서드:함수와 같은 개념이다. 작업을 수행시키는 방법이며 모든 것이 메서드로 만들어진다.

 

클래스: 개념적으로 정보,작업,동작을 담고 있다. 클래스 간에 서로 통신이 가능하다. 데이터 구조로 이루어져 있으며 클래스의 객체가 생성되면 모두 참조할 수 있다. Unity에서 생성되는 모든 스크립트는 클래스이다.

 

MonoBehaviour: 클래스가 Unity Scene의 게임 오브젝트에 연결될 수 있다는 것을 의미한다.

 

점 표기법(점 연산자) : 클래스 내 모든 필드, 메서드 기타 데이터 타입은 점 표기업으로 액세스 할 수 있다. 클래스 간의 통신도 가능하다. 

 

Debug.Log(): 이 메서드를 이용해 변수, 문자 등을 출력할 수 있다. 

Debug.LogFormat(): 이 메서드를 이용해 텍스트 내부에 플레이스 홀더를  이용해 변수를 배치할 수 있다. ex)Debug.LogFormat(“Hello {0}”,name); 이면 name변수의 문자열이 (0)에 출력된다. 인덱스는 0부터 시작해 순차적으로 사용 가능하다. 

문자열 보간: $를 이용해 변수와 리터럴 값을 텍스트에 직접 삽입 가능 

ex)Debug.Log($”Hello {name}”);

 

AccessModifier: public,private,protected,internal

public:제한 없이 모든 스크립트에서 사용 가능

private:생성된 클래스에서만 사용가능

protected:포함하는 클래스 또는 파생된 타입에서 액세스 가능

internal:현재 어셈블리에서만 사용 가능

 

c# 공용 기본 Type: int, float, string, bool

var:타입추론. 변수의 타입을 추론할 수 있다. 지나친 사용 X

 

Awake():모든 오브젝트가 초기화되고 실행된다.(Start함수의 이전 및 프리펩의 인스턴스화 직후에 실행)

Start():스크립트 인스턴스가 활성화 될 때 실행. (첫 번째 프레임의 업데이트 전에 실행)

Update():매 프레임마다 실행. 특정 입력에 따라 반복되는 메서드. 마우스, 키보드 입력을 감지하거나 게임 플레이 로직을 실행하는 데 적합하다.

 

Collection:배열, 리스트. 딕셔너리

배열:여소의 추가나 삭제가 불가능해 유연성이 가장 떨어진다. 대신 처리속도가 빠르다.

기본구조: elementType[] name = new elementType[numberofelemets];

ex) string[] name=new string[3];, string[] name= new string[]{name1, name2, name3};

Length프로퍼티:name.Lenght를 이용해 name배열의 길이를 알 수 있다.  List,Dictionary에서는 사용 불가하다.

 

리스트:배열에 비해 요소의 추가, 삭제, 업데이트가 쉽지만 성능상 비용이 많이 든다.

기본구조: List<elementType> name= new List<elementType>();

ex)List<string> name= new List<string>(){ name1, name2};

Count프로퍼티:리스트의 수를 알 수 있다. 

Add()메서드: 리스트의 마지막에 새 요소를 추가한다. ex)name.Add(“name3”);

Insert()메서드: 특정 위치에 요소를 추가한다. ex)name.Insert(1,”name1.5”);

RemoveAt(),Remove():리스트의 요소를 제거한다.

 

딕셔너리: Key Value Pair를 이루는 값을 저장한다. 베열과 리스트와는 달리 순서가 없다. 

기본구조:Dictionary<KeyType,ValueType> name= new Dictionary<KeyType, ValueType>();

ex) Dictionary<string int> Item= new Dictionary<string int>()=

{

{"potion,5"},{"Aspirin",1}

}

으로 선언할 수 있다.

int potionnum= Item["potion"]이면 potionnum이 5가 할당된다.

Item["potion"] =10;이면 potion의 밸류값이 10으로 바뀐다. 

Item.Add("Sword",120);을 이용해 추가도 가능하다.

Item.ContainsKey("potion")을 이용하면 potion이 있는지 불 값으로 반환한다.(ContainsKey)사용

.Remove도 사용가능하다.

 

 

foreach:컬렉션의 각 요소를 가져온 후 지역변수에 저장해 구문 내에서 액세스 하는 역할을 한다.

지역변수 타입은 컬렉션 요소 타입과 일치해야 한다.

기본구조:foreach(elementType localName in colloectionVariable)

{

}

Dictionary에서 foreach를 다룰 때는 KeyValuePair타입을 사용해야한다.

ex)

foreach(KeyValuePair<string,int> kvp in members)

{

Debug.Log($”name:{kvp.Key} age:{kvp.Value});

}