○ 벡터 연산 기초
- Vector3 (x,y,z), 벡터란 정해진 원소를 갖고 있는 것.
- 길이(거리)와 방향을 가르키는 존재
○ 쿼터니언
- Quaternion.Enler [ 오일러;수학자]
- 오일러는 x,y,z축으로 회전하는 각을 만들었다?
- 회전 전과 회전 후의 축이 겹쳤을 경우 소실됨 3축에서 2축이 되버림
=> 짐벌 락?현상.(그래서 예전엔 90도회전을 피해감,89.999)
- Quaternion은 x,y,z,w 4축을 사용해서 90도 회전도 무사히 표현가능
+ Euler를 통해 나타내고 싶은 각을 표현, Euler(new Vector3(0,0,0))
+ LookRotation(new Vector3 (0,1,0)); 특정 방향으로 회전.
+ Lerp(Euler,Euler, %); 두 벡터 사이의 %의 값이 들어옴
○ 인스턴스화 => 프리펩 (재사용가능)
Instantiate(target); //새 객체 생성
○ 오버로드
함수 이름을 똑같이 하되, 다른 버전을 만드는 것,
오버로드는 함수 이름이 똑같아야함 하지만,
내용은 달라야 함, 출력이 다를 수도 있음
ex ) int sum(int a, int b)
int sum(int a,int b, int c)
float sum(float a, float b)
○ 정적 변수, 정적 함수
static => 어딘가에 선언된..
- 정적 변수 : 오브젝트를 초월해서 단 하나만 존재하는 변수, 개별이 아닌 모든 오브젝트(스크립트)의 단 하나의 변수
- 정적 함수 : 개별 오브젝트 상관없이 모든 것이 사용할 수 있는 변수 ->오브젝트를 거치지 않고 사용 가능
= 클래스에서 바로 . 찍어서 가능
ex ) class cat{
public static nya(){}
}
다른 스크립트에서 cat.nya() 호출 가능.
○ 싱글톤
- 디자인패턴이란, 프로그래머 사이에서 공유되는 어떤한 코드를 작성하는 방향,
- 게임이나 메모리 상에 하나만 존재, 언제어디서든 접근가능한 오브젝트에 사용
+ static사용하여 동시에 접근가능한 특정 변수 사용가능
○ 코루틴
처리와 처리 사이에 대기 시간을 줄 수 있으며, 병렬로 실행 가능
EX) FadeInOut
○ 레이캐스트
Physics.Raycast(광선이 시작되는 지점, 광선 방향, 사전거리, out 정보 넣는 곳(RaycastHit) , 해당 레이어에서만 동작) : (콜라이더 감지)
○ 상속 및 다형성
- 상속 : 미리 베이스가 되는 베이스 클래스를 갖고 와서 코드 재활용 및 구조 간결 가능
- 파생된 클래스를 한번에 관리 가능
베이스 클래스 == 부모
모든 친구들의 원형, 모든 친구들이 공통으로 가진 특성, 기초적인 개념을 가지고 있음
public - 공개
protected - 보호된
private - 비공개
해서 public 함수에서 private를 호출가능하지만, 자식 클래스에서 private 호출은 불가능, protected는 바깥에서는 숨기기 가능
- 다형성
polymorphism에서 poly는 여러, 다양한(many), morph는 변형(change)이나 형태(form)의 의미
사전적 정의로만 살펴보면 "여러가지 형태"를 나타내는데, 이를 객체 지향 프로그래밍으로 끌고 온다면 "하나의 객체가 여러 개의 형태를 가질 수 있는 능력" ,
부모 클래스를 기반으로 여러 자식 클래스를 만들 수 있음
-> 오버 로딩과 오버라이딩에서 접해 볼 수 있음
- 오버라이드
부모 클래스에서 만든 함수를 자식 클래스에서 덮어 씌어서 자신만의 것으로 새롭게 만드는 것을 의미 [자식클래스]- virtual 자식이 덮어 씌울 수 있다는 의미, (대체 가능) [부모클래스]
○ 인터페이스
상속 받는 클래스에게 함수나 어떤 것을 강제하는 것..아이템, 몬스터, 플레이어 직업,, 등에 상관없이 한번에 처리할 때 많이 사용
- 인터페이스는 'I' 대문자를 붙여줌, ex) IItme
코드 다 지우고
public interface IItem {
void Use();
}
인터페이스 에서는 함수 내부를 구현하지 않음.
GoldItem : MonoBehaviour, IItem{ public void Use(){} // 인터페이스 내에서 선언한 함수는 무조건, 만들어야함}
// 동작이 달라도 괜춘
collider 호출 시 getComponent.<IItem>() 사용시
내부에 무조건 Use라는 함수가 있다는 걸 알아서
따로 체크, 확인 할 필요 없이 Use사용 가능
○ 추상클래스 abstract
- 일반적인 클래스와 인터페이스의 중간 역할
- 자식에게 자신이 갖고 있는 멤버나 클래스를 상속, 하지만, 실시간생성이 안됨
+ 인터페이스는 내부에 구현 불가능하지만, 추상클래스는 내부 구현 가능 but, 찍어낼 수 없음
+ 물론 내부에 구현 하지 않아도 가능.
+ 필요한 부분 만 public abstract void Func(){} 시
+ 자식 클래스에서 오버라이드 해서 사용 가능하도록 함
○ 프로퍼티
- 변수처럼 사용하지만, 안에서는 특수한 기능을 넣을 수 있음
public int point {
get {
return _point
}
set{
if(_point<0)
_point = 0
else
_point = value
}
}
이런식으로 변수 저장 시 조건 주는 것이 가능
'IT > 공부 정리' 카테고리의 다른 글
[UNITY/C#] C#고급 프로그래밍 (0) | 2023.03.09 |
---|---|
[UNITY] C# list 사용법 (2) | 2023.02.24 |
[Unity] 유니티 내부 기초 (0) | 2023.02.18 |
[UNITY] C# 기본 프로그래밍 (0) | 2023.02.11 |
[UNITY] 게임 엔진의 원리 (0) | 2023.02.11 |