-
유니티 함수 내에서만 사용되는 지역함수 / Unity Local Function유니티 2023. 9. 5. 11:45
전역변수와 지역변수
using UnityEngine; public class Test : MonoBehaviour { int globalValue = 1; void Start() { int localValue = 2; } }
globalValue는 클래스 바로 하위에 선언되어있어
이 클래스 내 어떤 함수에서도 접근이 가능하여 전역변수라고 부릅니다.
localValue는 Start라는 함수 안에 선언되어있어
Start 함수 안에서만 접근이 가능하여 지역변수라고 부릅니다.
중괄호 { } 가 끝나면 지역변수는 메모리에서 해제가 됩니다.
함수의 매개변수도 지역변수
int Calc(int value) { value = value * 10; return value + 1; }
이 함수에서 매개변수 value 역시 이 함수가 끝나면 사라지는 지역변수입니다.
지역변수를 매개변수로써 선언한 것이기 때문에 값을 임시로 저장할 수도 있지요.
전역함수와 지역함수
using UnityEngine; public class Test : MonoBehaviour { void GlobalFunc() { print("GlobalFunc"); } void Start() { void LocalFunc() { print("LocalFunc"); } GlobalFunc(); // 전역함수 호출 LocalFunc(); // 지역함수 호출 } }
변수도 전역변수와 지역변수가 있듯이 함수도 똑같습니다.
GlobalFunc는 클래스 바로 하위에 선언되어있어
이 클래스 내 어떤 함수에서도 접근이 가능하여 전역함수라고 부릅니다.
localFunc는 Start라는 함수 안에 선언되어있어
Start 함수 안에서만 접근이 가능하여 지역함수라고 부릅니다.
지역변수가 함수 내에서만 임시로 사용되는 것처럼
지역함수도 함수내에서만 임시로 쓰기 위해 사용됩니다.
외부에서 불가피하게 접근하지 못하도록 이 함수내에서만 호출하는 함수일 때만 사용한다는 것이죠.
지역함수 코루틴 예제
using System.Collections; using UnityEngine; public class Test : MonoBehaviour { void Start() { IEnumerator MyCo() { yield return new WaitForSeconds(1); print("MyCo"); } StartCoroutine(MyCo()); } }
코루틴을 만약 Start 내에서만 호출하고 싶다면 StartCoroutine(MyCo())형태로 호출하면 됩니다.
주의할 점은 StartCoroutine("MyCo") 처럼 매개변수를 string으로 호출하려고 하면 코루틴 호출이 안됩니다.
그 이유는 유니티는 컴파일 동안 코루틴들을 string으로 포인터를 만들어 두는데
지역함수 코루틴은 여기에 포함이 안되기 때문입니다.
'유니티' 카테고리의 다른 글
유니티 모바일 시뮬레이터로 다양한 해상도 대응하기 / Respond to Wide Range of Resolutions with Unity Mobile Simulator (2) 2023.09.07 유니티 추상클래스로 깔끔한 코드 작성하기 / Unity Abstract Class (0) 2023.09.05 유니티 튜플 사용법 / Unity How to Use Tuple (2) 2023.09.05 유니티 반응형 UI 기초지식 / Unity How to Make Flexible Responsive UI (0) 2023.08.31 유니티 비주얼 이펙트 그래프 백과사전 / Unity Visual Effect Graph All Nodes (2) 2023.08.31