Action<>
Func<>
Color
- float r g b a
- 색상 범위를 0 ~ 1까지 쓰겠다는 것이다.
- 여기에 255를 곱하면 byte가 된다.
- Color32 - byte r g b a
- 색상 범위를 0 ~ 255까지 쓰겠다는 것이다.
- 얘를 256으로 나누면 float으로 간다.
- byte는 Color를 순수한 색상값으로 쓰는것이고, float은 SRGB라는 선명하고 색상 주위에까지 영향을 주는 색을 사용할떄 쓴다.
rigidbody.AddForce
- 리지드 바디 컴포넌트에 힘을 가하는 함수다.
- Acceleration : 질량을 무시하는 힘
- Force : 미는 힘
- Impulse : 짧은순간 힘을 빡 주는 힘
- VelocityChange : 내가 직접 힘을 입력해서 주는 힘 (velocity 같은거)
AddForceAtPosition, AddForceRelativePosition
- AddForceAtPosition : 특정 지점으로부터 힘이 시작된다.
- 폭발에서 주로 사용한다.
- ex. 수류탄이 터질때 수류탄에서 먼 사람은 데미지를 적게 받고 가까운 사람은 세게 받는다.
- 즉, 가까운 지점에서 힘을 받을때 세게 받고, 먼 지점에서 받으면 덜 받는다.
- AddForceRelativePosition : 로컬 좌표를 기준으로 힘을 받는다.
객체지향
- 추상 클래스
- 추상 함수를 하나라도 포함하는 클래스
- 멤버 변수도 가질 수 있다.
- 인터페이스
- 객체지향 설계에서 가장 막강한 힘을 가지고 있다.
- 추상 함수 ‘만’ 가진다
- 상수까지 가능 (근데, 관례상 상수도 안쓴다.)
- 변수도 없다.
비주얼 스튜디오
- .net Framwork로 동작한다.
- 얘가 OS위에서 작동하고, 메모리를 관리한다.
- 얘하고 연결된게 CIL(중간언어)이다.
- .net프레임워크에서 코드가 작동할수 있게 해주는 언어다.(Code메모리에 들어가는 애다)
인터페이스
- 인터페이스에는 비추상 클래스 class 또는 struct가 구현해야 하는 관련 기능 그룹에 대한 정의가 포함되어 있다.
- 기본 public 이다.
- 선언되는 함수는 무조건 추상이다.
- 인터페이스 명은 I를 붙여서 짓는다. ⇒ 파라미터로 쓸때도 I를 붙인다.
- 서로 다른 함수를 묶어주는 역할(분류에 있는 태그같은 기능이다.)
Interfate IAttack{
void Attack();
}
Character Player{
public void Attack(){
}
}
- 추상 클래스와의 차이점
- 클래스는 인터페이스를 하나 이상 상속할 수 있지만, 추상클래스는 하나만 상속 가능하다.
- 인터페이스는 생성자를 선언할 수 없지만, 추상클래스는 생성자를 선언할 수 있다.
- 인터페이스는 클래스의 외부 능력을 정의하는데 사용되지만, 추상클래스는 클래스의 실제 ID를 정의하는 데 사용되며 객체 또는 동일한 유형으로 사용된다.
- 다양한 구현이 메소드 서면만 공유하는 경우 인터페이스를 사용하고, 다양한 구현이 동일한 종류이고 동일한 동작 또는 상태를 사용하는 경우 추상클래스를 사용한다.
Extend
- 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 "추가"할 수 있다.
- 확장 메서드는 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출된다.
- 확장 메서드는 static 클래스에서 정의되어야한다.
- 첫 번째 매개변수는 this 키워드가 사용되어야한다.
public static class Extend_TransformHelpers //확장기능이 들어간 클래스다.
{
public static Transform FindChildTransformByName(this Transform transform, string name)
{
Transform[] transforms = transform.GetComponentsInChildren<Transform>();
foreach(Transform t in transforms)
{
if (t.gameObject.name.Equals(name))
{
return t;
}
}
return null;
}
}
//파라미터에 string만 있는 이유는 this는 이 스크립트가 들어간 오브젝트를 의미하는것이기 때문이다.
holsterTransform = transform.FindChildTransformByName("Holster_Sword");