ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Application.OpenURL の基本
Unity 公式 API で最もシンプルに Web ページを開く方法。OS のデフォルトブラウザで指定 URL を開きます。
using UnityEngine;
using UnityEngine.UI;
public class WebOpener : MonoBehaviour {
public Button openButton;
void Start() {
openButton.onClick.AddListener(() => {
Application.OpenURL("https://example.com");
});
}
}
プラットフォーム別の挙動
| プラットフォーム | 動作 | 注意 |
|---|---|---|
| Windows / macOS | OS デフォルトブラウザで開く | — |
| iOS | Safari (またはデフォルトブラウザ) で開く、アプリは背景化 | SafariViewController を使えばアプリ内表示 |
| Android | デフォルトブラウザで開く、アプリは背景化 | Custom Tabs でアプリ内表示も |
| WebGL | 新しいタブで開く (target=_blank) | ポップアップブロッカー注意 |
| UWP | Edge 等で開く | — |
WebGL でのポップアップブロッカー対策
WebGL ビルドでは Application.OpenURL が JavaScript の window.open() に変換されます。ユーザのクリックイベント由来でない場合 (Update や Coroutine の途中) ポップアップブロッカーで止められます。
// ✗ ダメな例: ボタンクリックではなく自動で開く
void Start() {
Application.OpenURL("https://example.com"); // ブロックされる
}
// ✓ OK な例: クリックイベント由来
public Button btn;
void Start() {
btn.onClick.AddListener(() =>
Application.OpenURL("https://example.com")); // 通る
}
WebGL: 同じタブで開きたいとき
Application.OpenURL は新しいタブで開きますが、同じタブで遷移したいなら Application.ExternalEval で JS を直接実行します:
#if UNITY_WEBGL && !UNITY_EDITOR
Application.ExternalEval("window.location.href = 'https://example.com';");
#else
Application.OpenURL("https://example.com");
#endif
※ ExternalEval は非推奨化されつつあり、推奨は jslib プラグインを作って [DllImport("__Internal")] で呼ぶ方法です。
URL Scheme で他アプリを起動
HTTP/HTTPS 以外の URL でも OpenURL は使えます。これで他アプリを起動できます:
using UnityEngine;
public class Launcher : MonoBehaviour {
public void OpenTwitter() {
// インストール済なら Twitter アプリが起動、なければブラウザ
Application.OpenURL("twitter://user?screen_name=unity3d");
}
public void SendMail() {
Application.OpenURL("mailto:support@example.com?subject=お問い合わせ");
}
public void Call() {
Application.OpenURL("tel:+819012345678");
}
public void OpenMap() {
// iOS Apple Maps / Android Google Maps
Application.OpenURL("https://maps.google.com/?q=Tokyo+Tower");
}
}
ストアレビュー誘導
using UnityEngine;
public static class StoreReview {
public static void OpenReview() {
#if UNITY_IOS
// iOS App Store
Application.OpenURL("itms-apps://itunes.apple.com/app/idXXXXXXXXX?action=write-review");
#elif UNITY_ANDROID
// Google Play
Application.OpenURL("market://details?id=com.example.game");
#else
Application.OpenURL("https://example.com/download");
#endif
}
}
iOS 10.3+ は SKStoreReviewController API でアプリ内レビューダイアログを出すのが推奨 (アプリ離脱なし、ただし表示頻度に制限あり)。
アプリ内ブラウザ (UniWebView)
Application.OpenURL はアプリを離脱してしまうため、UX 重視ならアプリ内 WebView を組み込みます。UniWebView は Unity Asset Store の人気アセット (有償):
using UnityEngine;
public class InAppBrowser : MonoBehaviour {
private UniWebView webView;
void Start() {
webView = gameObject.AddComponent();
webView.Frame = new Rect(0, 0, Screen.width, Screen.height);
webView.OnPageFinished += (view, code, url) => {
Debug.Log($"loaded: {url}");
};
webView.Load("https://example.com");
webView.Show();
}
}
無償の代替には Unity の WebView Foundation や、Vuplex Web View (有償) 等があります。Native の SafariViewController / Custom Tabs を Plugin で呼び出す自作も可能。
iOS / Android のディープリンクで戻ってくる
Web ページから自分のアプリに戻すには Universal Link (iOS) / App Link (Android) を設定し、Application.absoluteURL で受け取ります:
void Start() {
Application.deepLinkActivated += OnDeepLink;
// 起動時に既にディープリンク経由なら
if (!string.IsNullOrEmpty(Application.absoluteURL)) {
OnDeepLink(Application.absoluteURL);
}
}
void OnDeepLink(string url) {
Debug.Log($"deeplink: {url}");
// myapp://room/abc を解析してシーン遷移など
}
セキュリティ注意点
- ユーザ入力をそのまま OpenURL に渡さない — javascript: スキーム等で XSS 的な攻撃に
- URL ホワイトリスト or プレフィックス検証 (
StartsWith("https://")) を挟む - WebGL では iframe 埋め込み元と Origin が異なる場合、開けない URL がある
FAQ
Q: WebGL で同じタブで遷移したい
A: Application.ExternalEval("location.href=...") または jslib プラグイン。
Q: iOS でアプリを離脱させたくない
A: SafariViewController 系プラグイン (UniWebView 等) を使うか、Native Plugin を書く。
Q: Application.OpenURL が動かない
A: WebGL でクリックイベント外 / URL が javascript:〜 / Android のターゲット SDK 30+ で intent filter が必要、等を確認。
Q: クリックされた回数をトラッキングしたい
A: OpenURL の前に Analytics イベントを発火: Analytics.CustomEvent("url_clicked", ...)。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?