Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-16 04:51
관리 메뉴

nomad-programmer

[CG/Unity] 다른 스크립트의 변수와 함수 사용 본문

CG/Unity

[CG/Unity] 다른 스크립트의 변수와 함수 사용

scii 2022. 12. 26. 01:19

다른 오브젝트에 잇는 스크립트의 변수를 변경하거나 함수를 호출하는 방법을 알아보자.
GetComponent 함수를 사용하는 방법과 Singleton 기법을 사용하는 방법이 있다. 2개의 오브젝트 obj1, boj2를 만들고 obj1에는 TextScript1.cs 스크립트를 컴포넌트로 추가하고 obj2에는 TextScript2.cs 스크립트를 컴포넌트로 추가할 것이다. 그리고 TextScript1.cs 스크립트 안에서 obj2의 컴포넌트인 TextScript2.cs 스크립트의 변수를 변경하고 함수를 호출하겠다.

GetComponent 함수 사용하기

TextScript1 스크립트를 드래그하여 Hierarchy 뷰에 있는 obj1 오브젝트에 놓는다. 마찬가지로 TextScript2 스크립트를 드래그하여 Hierarchy 뷰에 있는 obj2 오브젝트에 놓는다. 이 작업을 통해 obj1 오브젝트에 TextScript1 스크립트를 컴포넌트로 추가하게 된다. obj2 오브젝트에는 TextScript2 스크립트가 컴포넌트로 추가된다.

obj1, obj2 생성 (Gameobject Empty)
TextScript1.cs, TextScript2.cs 파일 생성
반드시 접근제어자로 public을 적어줘야 한다. 그래야 다른 클래스에서 접근하여 사용할 수 있기 때문이다.
TextScript2.cs의 변수 및 함수를 호출
호출 결과

순서를 정리하면 다음과 같다.

  • 참조할 다른 오브젝트를 선언한다. GameObject obj;
  • Find 함수를 사용하여 접근할 오브젝트를 찾아 obj에 대입한다.
  • GameObject의 GetComponent를 사용하여 자신의 컴포넌트를 얻는다.
  • .(접근 연산자)를 사용하여 변수 및 함수에 접근한다.
    • 변수 값 변경하기: obj.GetComponent<TestScript2>().a = 20;
    • 함수 호출하기: obj.GetComponent<TestScript2>().TestScript2Func();

Singleton (싱글톤) 패턴 사용하기

Singleton의 사전적 의미는 단독 개체, 독신자이다. 하나의 인스턴스만 가질 수 있다는 의미이며 static을 사용한 전역적인 접근과 관련된 패턴이다.

빈 게임오브젝트 생성
TestScript1.cs, TestScript2.cs 스크립트 생성

Singleton 만들기

TestScript2.cs 스크립트를 다른 클래스(다른 스크립트)에서 쉽게 접근하여 사용할 수 있도록 static을 사용하여 instance라는 객체를 선언한다. 그리고 Awake 함수 안에서 한 번만 TestScript2 객체를 생성할 수 있도록 처리한다.

Awake() 함수란?
이 함수는 항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출됩니다. 게임 오브젝트가 시작하는 동안 비활성 상태인 경우 Awake 함수는 활성화될 때까지 호출되지 않습니다.

이때 사용한 this는 TestScript2 (클래스) 스크립트를 의미한다. 다음과 같이 하면 instance 객체는 한 번만 만들어진다. 여러 클래스에서 접근이 필요한 변수나 함수가 존재할 때 접근을 쉽게 하기 위해 사용하는 방법이 Singleton이다.

Singleton 패턴
instance를 이용하여 변수 및 함수를 호출하고 있다.
결과

'CG > Unity' 카테고리의 다른 글

[CG/Unity] Awake 함수  (0) 2022.12.26
[CG/Unity] Triplanar  (2) 2022.03.13
[CG/Unity] 굴절 만들기  (0) 2022.03.13
[CG/Unity] Matcap (메터리얼 캡쳐)  (0) 2022.02.06
[CG/Unity] 타 들어가며 없어지는 셰이더  (0) 2022.02.02
Comments