10
28

 

다른 스크립트의 함수 변수를 불러오고 싶을 때는 여러 가지 방법이 있다.

 

그 중에 쉽게 쓸 수 있는 방법을 생각나는대로 적어보았다.

 

첫 번째 방법

  • 데이터(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.함수();
COMMENT