# \_v

## 개요

<mark style="color:purple;">`_v`</mark>는 시나리오 전반에 걸쳐 공통으로 사용할 수 있는 전역 변수 및 함수를 관리하는 데 사용됩니다. 스크립트가 사용되는 모든 곳에서 <mark style="color:purple;">`_v`</mark>를 정의하고 접근할 수 있습니다.

{% hint style="warning" %}

1. 서브시나리오를 사용하는 경우 서브시나리오와 호출한 서브시나리오의 \_v는 서로 같은 \_v를 바라보기 때문에 간섭이 있게 됩니다.
2. 서브시나리오로 호출을 할경우 \_v에 유니크한 키를 활용하던가 서브시나리오에서 원본 시나리오로 돌아갈 때 lifecycle 관리를 별도로 해주어야 합니다.
   {% endhint %}

### **정의 가능한 위치**

<mark style="color:purple;">`_v`</mark>는 다음과 같은 스크립트 환경에서 정의하고 사용할 수 있습니다

* [**이벤트 스크립트**](https://docs.flextudio.com/flextudio/flex/undefined-1/broken-reference)
* [**로드 스크립트**](https://docs.flextudio.com/flextudio/flex/undefined-1/broken-reference)
* [**대체 표현식**](https://docs.flextudio.com/flextudio/flex/undefined-1/broken-reference) <mark style="color:purple;">**`{% %}`**</mark>

## 예시

{% code title="정의" %}

```javascript
// 변수 정의
_v.newVal = 'newValue';

// 함수 정의
_v.val_double = function(val) {
    return val * 2;
};
```

{% endcode %}

{% code title="사용" %}

```javascript
// 일반 스크립트
_v.newVal; // 'newValue'
_v.val_double(10); // 20

// 대체텍스트
{% return _v.newVal %}
{% return _v.val_double(Current.sector.value); %}
```

{% endcode %}

{% code title="삭제 및 초기화" %}

```javascript
_v.key = null // key의 값을 초기화

delete _v.key // key 항목까지 삭제

_v = {};  // _v 전체 초기화
```

{% endcode %}

## 활용

#### **1. 지속적인 정보 유지**

* **상태 유지**: 시나리오의 다양한 스탭 간에 사용자의 선택, 설정 값, 또는 게임의 점수와 같은 정보를 지속적으로 유지할 필요가 있을 때 <mark style="color:purple;">`_v`</mark>를 사용하여 이러한 데이터를 저장하고 재사용합니다.

#### **2. 서브시나리오 실행 시 값 저장**

* **임시 데이터 저장**: 메인 시나리오에서 서브시나리오로 이동하기 전에 특정 데이터를 임시로 저장하고, 서브시나리오가 종료된 후 이를 다시 활용합니다. 이는 서브시나리오에서의 사용자 결정이나 중간 결과를 보존하는 데 유용합니다.

#### **3. 콜렉션 데이터의 유연한 활용**

* **콜렉션 데이터 연계**: 현재 콜렉션에서 사용 중인 데이터를 <mark style="color:purple;">`_v`</mark>를 통해 저장함으로써, 서브시나리오로 이동하거나 복귀할 때 데이터의 무결성을 유지하고, 콜렉션 데이터를 보다 유연하게 활용할 수 있습니다.

#### **4. 전역 함수의 정의 및 사용**

* **재사용 가능한 함수**: 시나리오 전반에 걸쳐 자주 사용되는 기능이나 계산, 예를 들어 특정 형식의 데이터 가공, 검증 로직, 특정 형식으로의 데이터 포맷팅 등을 함수로 정의하고 <mark style="color:purple;">`_v`</mark>를 통해 언제든지 쉽게 호출하여 사용할 수 있습니다.

#### 샘플 시나리오 활용 예제

지도 API 주소 찾기 샘플 카드를 클릭하면 샘플 시나리오를 통해 <mark style="color:purple;">`_v`</mark> 를 활용한 예제를 확인해 볼 수 있습니다.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><a href="https://sample.flextudio.com/studio?ScenarioId=sample||sample_mapapi"><strong>지도 API 주소 찾기 샘플</strong></a></td><td></td><td></td><td><a href="https://3692858826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnEaccHKpzIIeXyj1yXLr%2Fuploads%2FRXbAN9Xavg7GphGqjJG9%2Fimage.png?alt=media&#x26;token=6ea2334e-56ab-4018-be1e-9ecaecb2671e">image.png</a></td><td><a href="https://sample.flextudio.com/studio?ScenarioId=sample||sample_mapapi">https://sample.flextudio.com/studio?ScenarioId=sample||sample_mapapi</a></td></tr></tbody></table>
