본문 바로가기

프로그램 공부/C#

유니티 시작, 요약 정리 2

1. 네임스페이스 (namespace)

: 앞선 긴 이름을 생략할 수 있게 만든다.

 

 

2. 구조체

public struct Tag
{
   public int a;
   public int b;
 
   //생성자를 만들어 구조체를 초기화 할때 일일이 하지않고 한번에 할 수 있다.
   public Tag (int _a, int _b, int _c)
   {
      a = _a; b = _b; c = _c;
   }
}
 
 
//구조체 초기화 - 생성자가 없을 때
Tag tag.a = 1;
Tag tag.b = 2;
Tag tag.c = 2;
 
//구조체 초기화 - 생성자가 있을 때
Tag tag = new Tag(1,2,3);

 

 

3. 델리게이트 (Delegate)

: 만약 레벨업시 Hp, Lv, Def, Att 등을 일일이 지정해서 안올려도 되도록 도와주는 것

public delegate void ChainFunction(int value);
ChainFuction chain;
 
int power;
int defence;
 
//안에 들어가는 변수는 만든 델리게이트 변수와 동일해야 한다.
public void SetPower(int value)
{
   power += value;
}
 
//안에 들어가는 변수는 만든 델리게이트 변수와 동일해야 한다.
public void SetDefence(int value)
{
   defence += value;
}
 
//한번에 처리할 클래스를 델리게이트 안에 넣는다.
chain += SetPower;
chain += SetDefence;
 
//chain안에 들어있는 각 클래스 SetPower, SetDefence에 5가 추가된다.
chain(5);
 
 
//chain에 있는 클래스 빼기
chain -= SetDefence;
 

-> 하나의 클래스 안에 있는 함수들을 관리 할 수 있다.

 

4. 이벤트 (Event)

: 타 클래스까지 관리 감독이 가능

델리게이트와 사용법은 같으나 타 클래스에 있는 함수도 추가하고 한번에 호출시킬수 있다.

(Test1 클래스에 있는 함수)

public static event ChainFuction OnStart;

(Test2 클래스에 있는 함수)

public void Abc (int _abc) { abc += _abc; }

(OnStart함수에 접근하여 Test2 클래스에 있는 함수를 추가) OnStart += Abc;

 

//OnDisable함수는 MonoBehavior안에 누군가 미리 만들어 놓은 함수

//게임이 꺼지거나 객체가 비활성화되면 호출되는 함수

(Test1 클래스)

private void OnDisable()

{

   //OnStart에 들어간 모든 함수에 5가 들어가 게임이 꺼질때 활성화 된다.

   //Test2에 있던 Abc함수까지 모두 호출된다.

   OnStart(5);

}

 

 

5. 상속

virtual : 가상함수 ≒ 자식클래스에서 다시 정의 할 수 있도록 부모 클래스의 함수에 붙여준다. (바꿈을 허가해줌)

 

override : 재정의 ≒ 자식 클래스에서 부모 클래스에 있던 함수를 다시 정의해서 사용

 

abstract : 추상함수 (추상 매소드) : 자식 클래스에서 기능을 완성시켜야 하는 함수

→ 미리 토대를 만들어줌 = 다형성

부모 클래스에서 abstract protected void A(); 라는 함수를 미완성인 상태로 둔다.

그후 자식 클래스에 부모 클래스를 상속하면 자식 클래스에 함수 A()를 구현하지 않았다고 뜬다.

abstrat를 사용시 부모 클래스 또한 미완성인 상태이므로 클래스 앞에 abstract를 붙여야한다.

public Class Parrent() => abstract Public Class Parrent()

{

}

 

 

6. 프로퍼티

: 매번 get, set 함수를 만들기 힘드므로 프로퍼티를 만든다.

int salary;
//프로퍼티 생성
public int SalaryP { get {return salary;} set {salary = value} }
 
//넣기 - set(10)
SalaryP = 10;
 
//가져오기 - get() => 그냥 SalaryP만 써서 사용가능
print(SalaryP);
 

public int SalaryP { get; set; }하면 간단히 get, set함수가 완성된다.

 

set 앞에 private를 붙이면 (private set {}) 타 클래스에서는 접근 불가

=> 은닉성 보장, 보안성 높임

 

 

7. 인덱서

≒ 배열로도 쓸 수 있는 프로퍼티

public int[] temp = new int[5];
 
public int this[int index]
{
   get { return temp[index]; }
   set { temp[index] = value; }
}
 
//만들어진 temp배열 함수의 특정 인덱스에 값 넣기
temp[2= 5;

 

※print는 MonoBehavior에 있는 함수라 MonoBehavior 클래스가 상속되어 있지 않으면 사용불가.

그럴때는 Debug.Log("내용") 함수를 사용한다.