UniWebView UniWebView
01 / ツール

Unity のための Web View。.

iOS と Android、ともにネイティブ。OAuth、HTML5 動画、運営ページ、ゲーム内ストアをそのまま組み込めます — 別のブラウザエンジンを抱える必要はありません。

C# 3 行で、2 プラットフォーム。

UniWebViewExample.cs C#
var webView = gameObject.AddComponent<UniWebView>();
webView.Load("https://example.com");
webView.Show();

その他の機能は動画でご覧ください →

初回リリース
2013 年 11 月 1 日
プラットフォーム
iOS · Android
対応
Unity 2021.3 LTS+
02 / なぜ

成熟したツール、ラッパーのラッパーではない。

UniWebView が 10 年以上にわたり Unity 内 Web View のデファクトであり続けた、3 つの理由。

  1. 01 native

    ネイティブ実装、ブラウザの再パッケージではない。

    UniWebView は iOS の WKWebView と Android の WebView を直接呼び出します。性能・互換性・ネットワークスタックがシステムブラウザと完全に一致し、Chromium を同梱しないためアプリサイズも肥大化しません。サードパーティのエンジンを別途追従する必要もありません。

  2. 02 one api

    1 つの API で両方のプラットフォーム。

    iOS と Android で挙動が一致するため、C# コードは 1 度書けば両プラットフォームで動作します。プラットフォーム差はプラグイン側で吸収。API 面はあえて小さく — 1 ページに収まるよう設計されています。

  3. 03 shipping since 2013

    10 年以上の実戦的な改良の積み重ね。

    Unity エンジンのバージョンアップ、iOS / Android API の進化、WebKit のリライト —— そのすべてに UniWebView は対応してきました。同じ作者により今も活発にメンテナンスされています。

03 / ユースケース

開発者が UniWebView で実際に作っているもの。

ゲーム内 Web View の主要 5 シーンを網羅。組み込んでその日に出荷。

01 ╱ OAuth · サインイン

Google・Facebook・Discord ほか主要プロバイダの認証フローを内蔵。

UniWebView は主要プロバイダ向けの認証フローヘルパーを同梱しています。Inspector で Client ID を一度設定し、StartAuthenticationFlow() を呼び出すだけ。結果は Unity の標準イベントで型付きトークンとして返り、リダイレクト URL の自前処理は不要です。

ドキュメント
GoogleSignIn.cs C#
using UnityEngine;

public class GoogleSignIn : MonoBehaviour {
    void Start() {
        var flow = GetComponent<UniWebViewAuthenticationFlowGoogle>();
        flow.StartAuthenticationFlow();
    }

    public void OnGoogleTokenReceived(UniWebViewAuthenticationGoogleToken token) {
        Debug.Log("Access token: " + token.AccessToken);
    }

    public void OnGoogleAuthError(long errorCode, string errorMessage) {
        Debug.LogError("Auth failed: " + errorCode + " " + errorMessage);
    }
}
02 ╱ ライブ運営 · チャネルメッセージ

CMS から配信し、C# は型付きコールバックで受け取る。

ライブ運営ページを Web 上で運用し、Channel Messaging システムで Unity を呼び出します。message.GetData<T>() で型付きペイロードを取得、応答も構造化したまま返却。各メッセージに action 名があり、C# 側で文字列解析は不要です。

ドキュメント
LiveOpsPage.cs C#
webView.OnChannelMessageReceived += (view, message) => {
    if (message.action == "claimReward") {
        var reward = message.GetData<RewardPayload>();
        Game.Inventory.Add(reward.itemId, reward.amount);
        message.Respond(new { success = true, balance = Game.Balance });
    }
    return null;
};
webView.Load("https://promo.example.com/event");
webView.Show();
03 ╱ スクリプト · Unity からページを操作

Unity から JavaScript を呼び出し、結果を C# で受け取る。

ページ読み込み完了後、EvaluateJavaScript(...) で任意の JS 式や関数を実行 —— プレイヤー状態の同期、バナーの差し替え、アニメーションのトリガーに使えます。コールバックで JS 式の戻り値が得られ、ラウンドトリップは C# 内で完結します。

ドキュメント
PageDriver.cs C#
webView.OnPageFinished += (view, statusCode, url) => {
    var json = JsonUtility.ToJson(Game.Player);
    webView.EvaluateJavaScript($"hydrate({json});", payload => {
        if (payload.resultCode == "0") {
            Debug.Log("Page returned: " + payload.data);
        }
    });
};
webView.Load("https://promo.example.com/welcome");
webView.Show();
04 ╱ 動画 · HTML5

シネマティクスや PV を Load() 1 行で。

インラインでもフルスクリーンでも、自動再生でも明示制御でも、YouTube / Vimeo / 自前 CDN —— Safari / Chrome と同じ HTML5 動画です。

ドキュメント
Cinematic.cs C#
var theatre = gameObject.AddComponent<UniWebView>();
theatre.SetAllowAutoPlay(true);
theatre.SetAllowInlinePlay(true);
theatre.Load("https://cdn.example.com/cinematic.html");
theatre.Show();
05 ╱ Safe Browsing · システムブラウザ

WebRTC・システム Cookie・自動入力が必要なときに。

Web View では実行できないページがあります —— ユーザーがすでに許可済みのカメラ・マイクを使う WebRTC ストリーム、Safari で既にログイン済みのセッション、システムレベルの自動入力やリーダーモード。UniWebView Safe Browsing は URL をそのまま委譲します:iOS は SFSafariViewController、Android は Chrome Custom Tabs。

ドキュメント
OpenExternal.cs C#
if (UniWebViewSafeBrowsing.IsSafeBrowsingSupported) {
    var browser = UniWebViewSafeBrowsing.Create(
        "https://chat.example.com/room/42"
    );
    browser.OnSafeBrowsingFinished += b => {
        Debug.Log("System browser dismissed");
    };
    browser.Show();
}
04 / 機能

小さく、予測可能な API。

UniWebView はスコープに対して意見を持ったツールです。以下はネイティブ Web View の中で公開される機能と、その上の Unity 統合です。

01 ╱ ネイティブ iOS · Android

WKWebView と WebView を直接呼び出し。

iOS は WKWebView、Android は WebView を直接利用。第 2 のエンジンは同梱しません。Cookie、ローカルストレージ、Service Worker、最新の HTML5 — システムブラウザと同等。

02 ╱ ブリッジ iOS · Android

C# ↔ JavaScript の双方向メッセージング。

ページから Unity へ、Unity からページへ、引数付きの名前付きメッセージを送信。Unity しか知らないことをページへ伝えるための JavaScript もランタイムで注入できます。

03 ╱ 認証 iOS · Android

プロバイダ別 SDK 不要の OAuth 2.0。

プロバイダのページを開き、リダイレクト URL を捕捉、トークンを解析するだけ。Google、Apple、Discord、Twitch — そして自前バックエンドにも同じ実装で対応。

04 ╱ レイアウト iOS · Android

Canvas 対応、Texture 化も可能。

RectTransform で位置とサイズを制御 — Unity UI でそのまま動作。あるいは Texture としてレンダリングし、3D メッシュにサンプリングできます。

05 ╱ ローカルコンテンツ iOS · Android

オフラインに優しいローカルファイル読み込み。

StreamingAssets や PersistentDataPath から HTML、CSS、JavaScript、画像を読み込み。事前バンドル UI、キャッシュ済みプロモ、完全オフライン対応に有用です。

06 ╱ Editor macOS Editor

macOS の Unity Editor で開発を反復。

毎回デバイスへ書き出さずに Editor 内で Web View をプレビュー。Editor プレビューは開発用途のみで、リリース対象は iOS と Android のままです。

05 / 価格

リリース方法に合わせてチャネルを選択。

プラグイン自体は同じ。違いは更新サイクル、サポートの深さ、ソースコードへのアクセスの有無。

Asset Store
$29.99 買い切り

Unity Asset Store 経由で配布。Asset Store でまとめて購入するスタジオに便利です。

  • すべての対応プラットフォーム
  • v6.x 内の無料アップデート
  • ユーザー向けドキュメント・ガイド
  • メールサポート
Asset Store で購入

※ 更新・返金は Asset Store の審査サイクルに準じます(約 1 週間)。

★ Pro / チーム向け
Source Access
$149 買い切り

UniWebView Store の特典に加え、GitHub のソースコードへのアクセス。

  • すべての対応プラットフォーム
  • メジャー含む全ての将来バージョンで無料アップデート
  • GitHub リポジトリへのアクセス
  • エンジニア向けドキュメント
  • メールでの優先サポート
  • 次期リリースの早期プレビュー
Source Access を購入

※ チェックアウト時に GitHub ユーザー名をご用意ください。

✦ おすすめ
UniWebView Store
$29.99 買い切り

当方から直接ご購入。アップデートも返金も時間単位、Asset Store の審査サイクルを待ちません — 作者と直接やりとりできます。

  • すべての対応プラットフォーム
  • v6.x 内の無料アップデート
  • 即時アップデート・返金
  • メールサポート — 作者から直接
  • リリース通知
UniWebView Store で購入

※ Asset Store と同じプラグイン — ただし更新が早く、対応も迅速です。

旧バージョンをご利用ですか? アップグレード価格を見る →

06 / レビュー

Unity 開発者の声。

Unity Asset Store からの実際のレビュー。

★ レビュー 01 ★★★★★

Very Impressive

Loads of features. I was able to integrate my web app into my Unity game. Well worth the money.
— izeko2004 Unity Asset Store
★ レビュー 02 ★★★★★

Feature-rich WebView solution

A recent issue with an event was promptly addressed by the developer. It's great to see such active maintenance and support.
— DntasEduardo Unity Asset Store
★ レビュー 03 ★★★★★

Really solid asset

Does everything it says on the can and has great support. When I was facing a problem I was instantly helped out by the developer.
— m4d Unity Asset Store

Unity Asset Store でレビューを全て見る