CREATE YOUR WORLD
Scripting
$ref & $unref
5 분
그 ref 및 out 키워드는 C#에서 변수를 메서드에 전달할 때 참조를 전달하는 데 사용됩니다.
TypeScript에서는 이러한 키워드를 사용할 수 없지만, ZEPETOScript에서는 다음을 사용하여 유사한 기능을 구현할 수 있습니다: $ref 및 $unref.
함수 | 설명 |
|---|---|
$ref(x?:T):$Ref | 매개변수에 대한 참조를 생성합니다. |
$unref(x:$Ref):T | 매개변수의 참조를 해제하고 원래 값을 반환합니다. |
예를 들어, 다음과 같이 장면을 설정해 보겠습니다:
- 장면에 3D 객체인 큐브를 추가합니다.

- 추가된 큐브의 검사기에서 "구성 요소 추가"를 클릭하고 Rigidbody를 추가합니다.

- 장면에 빈 GameObject 추가하기.
- 아래의 RefSample 스크립트를 작성하고 3단계에서 생성한 GameObject에 추가하세요.
TypeScript
1import { GameObject, Rigidbody } from 'UnityEngine'
2import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
3import TestScript from './TestScript';
4
5export default class RefSample extends ZepetoScriptBehaviour {
6
7 Start() {
8 // "Cube"라는 이름의 GameObject 가져오기
9 const testObject = GameObject.Find("Cube");
10
11 // "Cube" 객체에서 Rigidbody 컴포넌트 가져오기
12 const testComponent = GameObject.Find("Cube").GetComponent<Rigidbody>();
13
14 // "Cube" 객체에서 TestScript 컴포넌트 가져오기
15 const testScript = GameObject.Find("Cube").GetComponent<TestScript>();
16
17 // 컴포넌트와 객체에 대한 참조 생성하기
18 let tempObj = $ref(testObject);
19 let tempComponent = $ref(testComponent);
20 let tempScript = $ref(testScript);
21
22 // Rigidbody 컴포넌트가 null이 아닌지 확인하기
23 if(tempComponent != null) {
24 // 해당 참조의 실제 값에 접근하기
25 let component = $unref(tempComponent);
26 console.log(`컴포넌트 이름 : ${component}`);
27 }
28
29 // TestScript 컴포넌트가 null이 아닌지 확인하기
30 if(tempScript != null) {
31 // 해당 참조의 실제 값에 접근하기
32 let script = $unref(tempScript);
33 script.DoTest();
34 }
35
36 // GameObject 참조가 null이 아닌지 확인하기
37 if(tempObj != null) {
38 // 해당 참조의 실제 값에 접근하기
39 let objName = $unref(tempObj);
40 console.log(`tempObj 이름 : ${objName.name}`);
41 }
42 }
43}
- 다른 ZEPETOScript를 생성하고 아래의 TestScript를 작성하세요.
TypeScript
1import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
2
3export default class TestScript extends ZepetoScriptBehaviour {
4
5 DoTest() {
6 console.log(`TestScript의 DoTest()가 실행되었습니다.`);
7 }
8}
- TestScript를 Cube의 Inspector에 드래그하여 연결하세요.
- 결과를 관찰하기 위해 [▶︎(재생)] 버튼을 클릭하세요.
- 콘솔 로그 창에서 객체 참조, Rigidbody 구성 요소 및 ZEPETOScript 구성 요소의 성공 여부를 확인할 수 있습니다.

