> For the complete documentation index, see [llms.txt](https://ditoland-utplus.gitbook.io/ditoland/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ditoland-utplus.gitbook.io/ditoland/manual/business-studio-manual.md).

# Enterprise Studio Manual

![](/files/-MiUBOew54WxSHp5nI5y)

## Enterprise 가입방법&#x20;

{% content-ref url="/pages/-MhrU3CK7khbPmokURxD" %}
[Enterprise Account](/ditoland/manual/business-account.md)
{% endcontent-ref %}

## Enterprise 전용 오브젝트 종류&#x20;

<table data-header-hidden><thead><tr><th width="182">배치 위치</th><th width="203.33333333333331">이름</th><th width="353.6666666666667">기능</th></tr></thead><tbody><tr><td><strong>배치 위치</strong></td><td><strong>이름</strong></td><td><strong>기능</strong></td></tr><tr><td>월드</td><td>Media</td><td>URL에 해당하는 영상을 재생합니다.</td></tr><tr><td>ScreenUI</td><td>MediaView</td><td>URL에 해당하는 영상을 재생합니다.</td></tr><tr><td>ScreenUI</td><td>WebBrowser</td><td>URL에 해당하는 웹페이지를 출력합니다.</td></tr><tr><td>ScreenUI</td><td>HyperLinkButton</td><td>버튼 클릭시 URL의 웹페이지로 연결합니다.</td></tr><tr><td>ScreenUI</td><td>YoutubeViewer</td><td>URL에 해당하는 유튜브 영상들을 <br>내부 웹페이지 형태의 그리드로 출력합니다.  </td></tr></tbody></table>

### 배치 방법&#x20;

1\. **승인된 Enterprise 계정**으로 스튜디오에 로그인 합니다.

![](https://lh3.googleusercontent.com/klkyLrZ99c6LRuRGNcV6WaBgpl2yrnUV0F_boxnyr0sOVI_3PZCiZIwY1XgG6PI7gvVKcsiYikP55WwUvxHkQIWVAnIAIoqXPVsmgavonNGL0ydpjuE6LpR7SL4DRfVWyUDzcsFA=s0)

2\. 작업할 맵 파일을 엽니다.

3\. **월드 오브젝트**에서 + 버튼을 눌러 Media 오브젝트를 배치할 수 있습니다.

<figure><img src="/files/FLpop9Ne2SdPs9QWky5t" alt=""><figcaption></figcaption></figure>

4\. **ScreenUI**에서 + 버튼을 눌러 WebBrowser, MediaView, HyperLinkButton, YouTubeViewer 위젯을 \
배치할 수 있습니다.

<figure><img src="/files/3vEDEH5Ce1IxQPm8ntBE" alt=""><figcaption></figcaption></figure>

\
\
5\. 배치한 오브젝트를 선택한 뒤, 프로퍼티창에서 세부 옵션 설정이 가능합니다.

<figure><img src="/files/nnB5nGUmoatz4zY3lr5G" alt=""><figcaption></figcaption></figure>

## 전용 오브젝트 관련 프로퍼티&#x20;

### Media 오브젝트

<figure><img src="/files/3xfjx1XvMVxhv4htF7lG" alt=""><figcaption></figcaption></figure>

* Media Player : 출력할 영상을 미리 재생해볼 수 있어요
* MediaURL : 미디어 서버에 등록된 출력할 영상의 URL이에요&#x20;
* Looping : 출력할 영상의 반복 여부에요 (true = 반복 / false = 미반복)
* PlayOnOpen : 영상이 스크립트로 열렸을 때 재생할지 여부에요 (true = 재생 / false = 미재생)
* Target to Sync : 타겟으로 설정된 오브젝트에 동기화하여 영상이 보여져요
* Sync with Players : 다른 Media 오브젝트와 동기화하여 같이 보여줄지 여부에요 \
  (true = 동기화 / false = 미 동기화)
* FalloffDistance : 유튜브 영상 소리의 감쇠 반경 범위에요 (모바일에선 감쇠 기능이 동작하지 않아요)
* InnerRadius : 영상 소리의 반경 범위에요
* Pause Radius : 캐릭터가 나갔을 때 영상을 일시정지 하는 범위에요
* Play Radius : 캐릭터가 닿았을 때 영상을 재생하는 범위에요
* Trigger Play : Play Radius 영역에 들어왔을 때 영상을 재생할지 여부에요 \
  (true = 재생 / false = 미재생)

#### Media 오브젝트 - 스크린 프로퍼티

<figure><img src="/files/ewd1MyR8AMsc40x6FH7X" alt=""><figcaption></figcaption></figure>

ⓐ **MediaMesh** : 출력될 미디어 스크린의 Mesh를 변경합니다.&#x20;

<figure><img src="/files/wyMmq63x1P3mFQQ5Bskc" alt=""><figcaption></figcaption></figure>

→ **Custom Type**의 경우, 툴박스에서 원하는 매쉬를 선택할 수 있습니다.

<figure><img src="/files/qmADWSrP52tqN9xeTHhK" alt=""><figcaption></figcaption></figure>

ⓑ **CurvedScreen** : 적용된 Mesh를 휠 수 있습니다. (최소값 -1 최대 1)

<figure><img src="/files/k3Q5AB30egUSQO5q9ONW" alt=""><figcaption></figcaption></figure>

ⓒ **FillScreen** : 업로드한 영상의 해상도에 맞춰 영상을 재생합니다.

<figure><img src="/files/loT6DBmBM0RJfi4zNDeT" alt=""><figcaption></figcaption></figure>

### MediaView 위젯

<figure><img src="/files/iCX8HJYP8tfVB5jDl675" alt=""><figcaption></figcaption></figure>

* URL : 미디어 서버에 등록된 출력할 영상의 URL이에요
* Quality Type : 미디어 서버에 등록된 영상이 유튜브 URL일 경우, 출력할 유튜브 영상의 품질이에요
* Quality : 미디어 서버에 등록된 영상이 유튜브 URL일 경우, 유튜브 영상의 해상도에요 (최대 해상도 720)
* Media Player : 출력할 영상을 미리 재생해볼 수 있어요

### YouTubeViewer 위젯

<figure><img src="/files/vrjuk0zxMNkOy4HWXYTm" alt=""><figcaption></figcaption></figure>

* Add YoutubeURL : 유튜브 웹 뷰에 출력될 영상 URL을 추가해요
* URLn : 출력할 영상의 URL이에요
* 아래는YouTubeViewer 출력 시 이미지에요.

<figure><img src="/files/GF91eh7T7PxwCLCMf8QB" alt=""><figcaption></figcaption></figure>

### HyperLinkButton 위젯

![](/files/-MiU8qpH4NK456k6OL4U)

* URL : 버튼 클릭시 연결할 웹페이지의 URL이에요

### 주의 사항

* YouTube의 경우, 비공개로 설정된 영상은 표시되지 않을 수 있습니다. \
  (만약 영상이 나오지 않는다면 공개로 설정되었는지 확인해보세요!)

## 스크립트 기능

### Media 오픈 (Client와 Server)

```lua
--Client 에서 처리
local Media = Workspace.Media --Media 오브젝트를 변수에 할당해요

local ScreenUI = Workspace.ScreenUI

------------ 미디어 파일 업로드 중일때 진행도를 PrograssBar로 보여줘요
local function Media_UploadProgress(progress)     
    ScreenUI.ProgressBar:SetPercent(progress)
end
Media.OnUploadProgress:Connect(Media_UploadProgress)

------------ 1. 파일 다이얼로그를 오픈해요
local function OpenFileDialog(self)
    Media:OpenFileDialog()
end
ScreenUI.OpenFileDialogButton.OnPressEvent:Connect(OpenFileDialog) ------------ 버튼을 통해, FileDialog를 오픈해요

------------ 2. 미디어 서버에 파일 업로드 완료 상태를 체크해요.
local function Media_LoadComplete()        
    local mediaURL = Media.MediaURL ------ BroadCast를 위해, 미디어 서버에 올라간 MediaURL을 가져와요.
    Game:SendEventToServer("GetMediaURL", mediaURL) ------------ BroadCast를 위해, 서버에 MediaURL을 보내요     
end
Media.OnLoadCompleted:Connect(Media_LoadComplete)
```

```lua
--Server 에서 처리
local Media = Workspace.Media --Media 오브젝트를 변수에 할당해요

------------ 3. 미디어 키로 영상을 오픈해요
local function GetMediaURL(player, mediaURL)
    Media.MediaURL = mediaURL
    Media:OpenURL() ------ MediaURL을 오픈해요.
end
Game:ConnectEventFunction("GetMediaURL", GetMediaURL)
```

### Media 재생 제어 (Client/Server Script)

```lua
local Media = Workspace.Media --Media 오브젝트를 변수에 할당해요

--Media 오브젝트의 영상을 재생해요 
Media:Play()
 
wait(5)
Media:Pause() --재생중인 영상을 일시정지해요
 
wait(5)
Media:Pause() --일시정지한 영상을 다시 재생해요
 
wait(2)
Media:Close() --영상 재생을 멈춰요

```

### YouTubeViewer Widget (Client Script)

```lua
local ScreenUI = Workspace.ScreenUI --UI를 변수에 할당해요 
local Youtube_Viewer = ScreenUI.Youtube_Viewer --Youtube_Viewer 위젯을 변수에 할당해요

Youtube_Viewer:OpenViewer() --YoutubeViewer 웹 페이지를 오픈해요
```

### WebBrowser Widget (Client Script)

```lua
local ScreenUI = Workspace.ScreenUI --UI를 변수에 할당해요 
local WebBrowser = ScreenUI.WebBrowser --WebBrowser 위젯을 변수에 할당해요
local InitLink = WebBrowser.WebURL --WebBrowser 위젯에 설정된 링크를 변수에 할당해요 
 
wait(5)
print("Change Link!")
WebBrowser.WebURL = "https://ditoland.net/main" --WebBrowser 위젯의 링크를 변경해요 
```

### HyperLinkButton Widget (Client Script)

```lua
local ScreenUI = Workspace.ScreenUI --UI를 변수에 할당해요 
local HyperLinkButton = ScreenUI.HyperLinkButton --HyperLinkButton 위젯을 변수에 할당해요
local InitLink = HyperLinkButton.URL --HyperLinkButton 위젯에 설정된 링크를 변수에 할당해요 
 
wait(5)
print("Change Link!")
HyperLinkButton.URL = "https://ditoland.net/main" --HyperLinkButton 위젯의 링크를 변경해요 
```

### ChattingChannel (ClientScript)

{% tabs %}
{% tab title="JoinChattingChannel" %}

```lua
local ChannelName = "Channel1" --채팅 채널 이름을 변수에 할당해요 
 
wait(2)

--LocalPlayer를 Channel1 채널에 입장시켜요 
--같은 채널에 있는 플레이어끼리만 채팅이 보이게 돼요 
LocalPlayer:JoinChattingChannel(ChannelName) 
```

{% endtab %}

{% tab title="LeaveChattingChannel" %}

```lua
local ChannelName = "Channel1" --채팅 채널 이름을 변수에 할당해요 
 
wait(2)

--LocalPlayer를 Channel1 채널에서 퇴장시켜요  
LocalPlayer:LeaveChattingChannel(ChannelName) 
```

{% endtab %}
{% endtabs %}

### ImageID (ClientScript)

```lua
local ScreenUI = Workspace.ScreenUI --UI를 변수에 할당해요 
local Image = ScreenUI.Image --Image 위젯을 변수에 할당해요

--변경할 Image 리소스의 ID를 변수에 할당해요 
--Image 리소스의 ID는 툴박스에서 이미지를 우클릭해서 확인할 수 있어요
local ResourceID = 6800 
 
wait(5)
print("Change Image!")
Image.ImageID = ResourceID --Image 위젯에 표시할 리소스 ID를 적용해요
```

### 더 많은 기능을 보려면&#x20;

{% content-ref url="/pages/-LycGRMZpPmMOgQ9uQym" %}
[API Reference](/ditoland/api-reference.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MVtaDaG-u\_oXNmVLp9f" %}
[Sample](/ditoland/sample.md)
{% endcontent-ref %}

## 기타 문의 방법&#x20;

![](/files/-MWcP-8TgALiIzpjrebX)

**다른 개발자들과 다양한 정보를 공유하세요. 디토랜드 운영에게 직접 질문할 수도 있습니다.**

### [**디토랜드 디스코드 바로가기👉**](https://discord.gg/7EugJsh4nX)
