다른 스크립트의 함수 변수를 불러오고 싶을 때는 여러 가지 방법이 있다.
그 중에 쉽게 쓸 수 있는 방법을 생각나는대로 적어보았다.
첫 번째 방법은
- 데이터(Data) 영역 (정적 메모리)
- 스택(Stack) 영역
- 힙(Heap) 영역
Static으로 선언하는 것이다. 정적 메모리에 담으면 어디든 접근 가능하다.
두 번째 방법으로는
Find 함수를 쓰는 것이다.
//find 사용 예시 하이라이키 창에 모두 뒤져서 게임메니져를 찾아서 gm에다가 담아 넣는다
GameManager gm = GameObject.Find("GameManager").GetComponent<GameManager>();
//gm 스크립트에 있는 함수 Hit()를 호출 시에는 이렇게 쓴다.
gm.Hit();
Find를 쓰면 편하지만 하이라이키를 다 뒤져서 찾아다니기 때문에 하이라이키에 뭐가 많을 때는 찾기 힘들어져서 메모리 상 좋지 않다고 한다.
마치 컴퓨터가 장롱 속에서 게임 매니저라는 옷을 찾다가 게임이 멈춰버릴 수도 있다는 것?
세 번째 방법으로는
제일 직관적인 방법이다.
//변수 선언
public GameObject 스크립트;
// 인스펙터 창에 해당 오브젝트 끌어온다.
//함수 호출 사용시
스크립트.GetComponent<스크립트이름>().함수()
마지막으로 싱글톤 패턴이다.
Singleton 패턴은 단 하나의 객체를 생성해서 사용하는 디자인 패턴이다.
단, 컴포넌트 하나만 있어야 한다.
public static 클래스이름 instance;
private void Awake()
{
instance=this;
}
//함수 호출 사용시
클래스이름.instance.함수();
'STUDY > Unity' 카테고리의 다른 글
Unity - 저장 불러오기 PlayerPrefs와 Json DB (JsonUtility) (0) | 2021.10.28 |
---|---|
Unity - 정보의 은닉화 C# 프로퍼티(Property) (0) | 2021.10.28 |
Unity - AI Navigation Agent 플레이어 쫓아가기, 공포게임 (0) | 2021.10.28 |
Unity - 오브젝트 텍스트 TextMeshPro, Color 변수 스크립트에서 선언하고 사용하기(Color, Color32 의 차이) (0) | 2021.10.28 |
Unity - 구글 플레이 개발자 콘솔 Sha-1 인증서 확인, Play 게임 로그인 실패 + 파이어베이스 (0) | 2021.10.28 |