C# 3.0부터 지원하는 확장메서드(Extension Method)는 특수한 종류의 static 메서드인데,

확장메서드는 마치 다른 클래스(혹은 구조체)의 인스턴스 메서드인 것처럼 사용되는 기능을 제공한다.

확장메서드는 클래스, 구조체, 인터페이스 등에 적용될 수 있다.

 

일반적으로 인스턴스 메서드를 추가하기 위해서는 해당 클래스(혹은 타입) 안에 메서드를 추가한다.

하지만, 어떤 경우는 메서드를 클래스 (혹은 타입)에 직접 추가하는 것이 어려울 수도 있는데,

이러한 경우 확장메서드가 유용하게 사용될 수 있다.

확장메서드를 사용하면 클래스를 직접 변경하지 않고도, 클래스 외부에서 (확장)메서드를 정의함으로 해서

마치 그 클래스의 기능을 확장한 인스턴스 메서드를 추가한 것 같은 효과를 낼 수 있다.

확장메서드는 static class 안에 static method로 정의된다.

확장메서드는 첫번째 파라미터로 항상 클래스명(혹은 타입)을 지정하는데,

이는 그 확장메서드가 사용될 클래스 타입을 지정하는 것이다.

이를 통해 확장메서드는 마치 그 클래스의 인스턴스 메서드인 것처럼 사용할 수 있게 된다.

약간 특이한 문법이지만, 확장 메서드의 첫번째 파라미터의 클래스명 바로 앞에는 항상 this를 써준다.

아래 예제는 String 클래스에서만 동작하는 확장메서드를 정의한 예이다.

Found(this String str, char ch) 메서드는 String 클래스에서 사용되는 확장메서드로서

char 문자 하나를 입력파라미터로 받아들이는 메서드이다.

 

해당 메서드는 어떠한 문자열(str)안에 해당 문자(ch)가 들어가 있는지 확인을 하기 위해 만든 확장 메서드이다.

 

유니티에서 제공하는 Update 함수로 Update, FixedUpdate, LateUpdate 3가지가 존재한다.

 

Update

- 프레임당 1회씩 호출되며 해당 프레임이 나타나는 시간은 불규칙적이다.(불규칙적으로 실행됨)

 

FixedUpdate

- 고정적인 시간으로 반복적으로 실행되는 함수

 

- Update 함수와는 달리 프레임에 기반하지 않고 동일한 시간으로 동작해서 유니티 내의 물리 계산이 실행됨.

 

- 물리 효과가 적용된(Rigidbody) 오브젝트를 사용할 때 적합.

 

- FixedUpdate의 시간 간격은 프로젝트 설정에서 직접 변경가능하다.

https://docs.unity3d.com/kr/2018.4/Manual/class-TimeManager.html

 

시간 - Unity 매뉴얼

Time 설정(메뉴: Edit > Project Settings 로 이동한 다음 Time_ 카테고리 선택)을 통해 게임 내에서 타이밍을 조절하는 프로퍼티 수를 설정할 수 있습니다.

docs.unity3d.com

 

LateUpdate

- 모든 Update 함수가 호출된 후, 마지막으로 호출됨.

 

- 주로 오브젝트를 따라가게하는 카메라를 사용할 때 사용

 

Monobehaviour.Awake()

- Awake는 게임이 시작되기 전에 변수나 게임 상태를 초기화 할 때 사용.

 

- Awake는 객체가 인스턴스화 되었을 때 최초에 한 번만 호출(생성자와 비슷)

 

- 객체가 비활성화 상태일 경우 호출되지 않음.(스크립트의 활성여부와는 상관 x)

 

- 코루틴으로 사용이 불가

예)

IEnumerator Awake() x

 

Monobehaviour.Start()

- 게임이 시작되고 인스턴스화 된 객체들의 Awake함수가 호출이 된 이후에 한 번만 호출

 

- 스크립트가 활성화가 되어있어야 호출.

 

- 게임 도중에 생성된 객체들의 경우에는, 새로 생성된 해당 객체들의 Awake() 함수는

씬 내부에 있는 기존 객체들의 Start 함수 호출이 완료된 이후에 호출됨. 

 

- 코루틴으로 사용이 가능

예)

IEnumerator Start() o

 

 

 

안드로이드 APK 빌드를 진행하다가 위처럼 에러가 발생하는 경우가 있다.

 

앞에 에러가 발생했을경우 다음과 같이 행동해보자.

 

1. Unity Hub를 키고 해당 버전의 속성을 누르고 모듈 추가를 눌러준다.

그리고 안드로이드 플랫폼에 SDK, OpenJDK 등이 다운 받아져 있는지 확인.


2. C:\Users\사용자이름\.gradle\caches 내에 있는 파일을 전부 지우고 다시 빌드

 

3. 빌드하는 프로젝트의 경로가 C드라이브나 D드라이브에 있는지 확인.

 

보통의 경우 위의 방법대로 진행을 하면 빌드가 정상적으로 될 것이다.

+ Recent posts