# Unity

Після публікації миттєвої або турнірної гри її можна інтегрувати в мобільний додаток або гру, створену за допомогою Unity.

### Огляд

Клас WindayWrapper надає функціонал для відображення та взаємодії з контентом у **Unity за допомогою WebView**.

Він дозволяє завантажувати веб-сторінки, обробляти події та спілкуватися з контентом за допомогою JavaScript.

### Налаштування

1. Завантажте Winday [<mark style="color:blue;">**Unity Plugin**</mark>](https://drive.google.com/file/d/1a1e56cIPCsw9m6pG55TSM-Cku5be1N0f/view?usp=sharing).
2. Установіть плагін і перемкніть випадаюче меню Internet Access: Required у Project settings.

### Конструктор

#### WindayWrapper()

Опис: ініціалізує WebView та налаштовує обробники подій.

Приклад:

{% code overflow="wrap" %}

```csharp
WindayWrapper webView = new WindayWrapper();
```

{% endcode %}

### Методи

#### 1. Subscribe(string eventName, Action callback)

Опис: Підписується на подію, яка не передає жодних даних. Зворотний виклик буде виконано, коли спрацює подія.

Параметри:

* eventName: Назва події для прослуховування.
* callback: Дія, яка виконується під час ініціювання події.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe("exit-mobile-plugin", () => { Debug.Log("Exiting the mobile plugin."); });
```

{% endcode %}

#### 2. Subscribe\<T>(string eventName, Action\<T> callback) where T : class

Опис: Підписка на подію, яка передає дані. Зворотний виклик отримає дані, пов’язані з подією.

Параметри:

* eventName: Назва події.
* callback: Дія, яка виконується під час ініціювання події, отримання даних типу T.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe<GameColors>("winday-game-colors", (colors) => { Debug.Log($"Colors received: Yellow - {colors.yellow}, Blue - {colors.blue}, Red - {colors.red}, Green - {colors.green}, Purple - {colors.purple}"); });
```

{% endcode %}

#### 3. Unsubscribe(string eventName)

Опис: Скасовує підписку на попередньо підписану подію, видаляючи всі зворотні виклики, пов’язані з подією.

Параметр:

* eventName: Назва події, від якої потрібно скасувати підписку.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Unsubscribe("exit-mobile-plugin");
```

{% endcode %}

#### 4. SetVisible(bool visible)

Опис: Встановлює видимість WebView. Коли WebView відображається, він інтерактивний.

Параметр:

* visible: true, щоб зробити WebView видимим, false, щоб приховати його.

Приклад:

```csharp
webView.SetVisible(true);  // Shows the WebView
```

#### 5. LoadPage(string url)

Опис: Завантажує веб-сторінку в WebView за допомогою вказаної URL-адреси.

Параметр:

* url: URL-адреса веб-сторінки для завантаження.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.LoadPage("https://winday.club/games/VMPWRL3Y?isMobile=true");
```

{% endcode %}

#### 6. SetMargins(int left, int top, int right, int bottom, bool relative = false)

Опис: Встановлює поля WebView, визначаючи його розташування на екрані.

Параметри:

* left: Ліве поле в пікселях.
* top: Верхнє поле в пікселях.
* right: Праве поле в пікселях.
* bottom: Нижнє поле в пікселях.
* relative: Якщо значення true, поля визначаються у відсотках від розміру екрана; інакше вони в пікселях.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.SetMargins(10, 10, 10, 10);  // Set 10px margins on all sides
```

{% endcode %}

#### 7. OnPageStartLoading

Опис: Ця подія запускається, коли нова веб-сторінка починає завантажуватися в WebView. Він надає URL-адресу сторінки, яка починає завантажуватися.

Приклад:

{% code overflow="wrap" lineNumbers="true" %}

```csharp
// Instantiate the WindayWrapper
WindayWrapper webViewWrapper = new WindayWrapper();

// Subscribe to the OnPageStartLoading event
webViewWrapper.OnPageStartLoading += (url) =>
{
    Debug.Log($"Page is starting to load: {url}");
};

// Load a new page
webViewWrapper.LoadPage("https://example.com");
```

{% endcode %}

#### 8. OnPageLoaded

Опис: Ця подія запускається, коли веб-сторінка успішно завантажується. Він також надає URL-адресу завантаженої сторінки.

Приклад:

{% code overflow="wrap" lineNumbers="true" %}

```csharp
// Subscribe to the OnPageLoaded event
webViewWrapper.OnPageLoaded += (url) =>
{
    Debug.Log($"Page has finished loading: {url}");
    webViewWrapper.Show();
};

// Load a new page
webViewWrapper.LoadPage("https://example.com");
```

{% endcode %}

#### 9. OnClosed

Опис: Ця подія спрацьовує, коли WebView знищується або закривається. Це сигналізує про те, що WebView більше не активний і його видалено зі сцени.

Приклад:

{% code overflow="wrap" lineNumbers="true" %}

```csharp
// Subscribe to the OnClosed event
webViewWrapper.OnСlosed += () =>
{
    Debug.Log("WebView has been closed.");
};

// Destroy the WebView
webViewWrapper.Destroy();
```

{% endcode %}

### Приклади Подій

#### exit-mobile-plugin

Опис: Запускається, коли користувач хоче вийти з мобільного плагіна.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe("exit-mobile-plugin", () => { Debug.Log("Exiting mobile plugin."); });
```

{% endcode %}

#### winday-game-win

Опис: Запускається, коли користувач виграє гру.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe("winday-game-win", () => { Debug.Log("Player has won the game!"); });
```

{% endcode %}

#### winday-game-lose

Опис: Запускається, коли користувач програє гру.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe("winday-game-lose", () => { Debug.Log("Player has lost the game."); });
```

{% endcode %}

#### winday-game-tutorial-start

Опис: Запускається, коли починається туторіал.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe("winday-game-tutorial-start", () => { Debug.Log("Tutorial has started."); });
```

{% endcode %}

#### winday-game-tutorial-complete

Опис: Запускається, коли туторіал завершено.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe("winday-game-tutorial-complete", () => { Debug.Log("Tutorial is complete."); });
```

{% endcode %}

#### winday-game-colors

Опис: Запускається, коли надсилаються дані кольору гри.

Приклад:

{% code overflow="wrap" %}

```csharp
webView.Subscribe<GameColors>("winday-game-colors", (colors) => { Debug.Log($"Colors: Yellow - {colors.yellow}, Blue - {colors.blue}, Red - {colors.red}, Green - {colors.green}, Purple - {colors.purple}"); });
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.winday.co/ua/publikaciya-igor/integraciya-v-mobilnii-dodatok/unity.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
