Version: Unity 6.0 (6000.0)
言語 : 日本語
カスタムウェブテンプレートを追加する
ウェブテンプレート変数

ウェブテンプレートの構造体とインスタンス化

テンプレートの index.html ファイルでカスタムユーザー変数を使用し、createUnityInstance() を使用してコンテンツの新しいインスタンスを作成します。

テンプレート変数、JavaScript マクロ、および条件付きディレクティブについては、ウェブテンプレート変数を参照してください。

カスタムウェブテンプレートを追加するには、カスタムウェブテンプレートの追加を参照してください。

カスタムのユーザー変数

ウェブテンプレートを選択すると、Unity はテンプレートを解析し、JavaScript のマクロや条件付きディレクティブを探します。

Unity は、以下の場合に JavaScript 変数をカスタムユーザー変数として扱います。

  • JavaScript のマクロや条件付きディレクティブの中で使用される場合。
  • テンプレートコードで宣言されていない場合。
  • 内部プリプロセッサー変数ではない場合。

Unity は、これらのカスタムユーザー変数を、Player Settings ウィンドウ内の Resolution and Presentation セクションに自動的に追加します。

例えば、生成された index.html ページのタイトルを Player 設定 ウィンドウから直接制御したい場合、まず、カスタムテンプレートの index.html<title> 行を以下のように変更する必要があります。 <title>{{{ PAGE_TITLE }}}</title> 終わったら、カスタムテンプレートを再度選択してください。これでテンプレートが再び解析され、Page Title フィールドが、Player 設定ウィンドウの Resolution and Presentation > Web Template セクションに表示されます。

カスタムテンプレートを使用した Resolution and Presentation ウィンドウの画像
カスタムテンプレートを使用した Resolution and Presentation ウィンドウの画像

このフィールドにテキストを入力してプロジェクトをビルドすると、テンプレートマクロで使用されているカスタム変数 PAGE_TITLE が、自動的に Page Title フィールドのテキストになります。

カスタムの整数や float の変数をマクロで使用したい場合は、parseInt() または parseFloat() JavaScript 関数をマクロで使用して、Unity エディターから送信される文字列値を前処理します。これは、カスタムユーザー変数には常に文字列値が割り当てられるからです。

ノート: 変数名のアンダースコア文字は、可読性を高めるためにフィールド内のスペースとして表示されます。

index.html ファイルの構造

index.html には、ビルドをロードするために必要なコードが含まれており、以下を含む必要があります。

  • <canvas> 要素。Unity ランタイムは、<canvas> 要素を使用してアプリケーションをレンダリングします。
  • ビルドローダーをダウンロードするための JavaScript コード。 例:
var buildUrl = "Build";
var loaderUrl = buildUrl + "/{{{ LOADER_FILENAME }}}";
var script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
  // code for instantiating the build
};
document.body.appendChild(script);`

この例では、{{{ LOADER_FILENAME }}} は、ビルドが生成される際にテンプレートのプリプロセッサーによって自動的に解決されます。

あるいは、スクリプトタグなどを使って、ビルドローダーをダウンロードすることもできます。例えば、以下の通り。 lang-js <script src="Build/{{{ LOADER_FILENAME }}}"></script>

  • ビルドをインスタンス化するための JavaScript コード。Unity のビルドは、ビルドローダースクリプトで定義される createUnityInstance() 関数を使ってインスタンス化されます。

インスタンス化関数: createUnityInstance()

createUnityInstance() 関数は、コンテンツの新しいインスタンスを作成します。以下のように使うことができます。 createUnityInstance(canvas, config, onProgress).then(onSuccess).catch(onError);

この関数は、Promise オブジェクトを返します。

オブジェクト 用途
canvas Unity ランタイムは、ゲームのレンダリングに canvas オブジェクトを使用します。
config config オブジェクトには、コードやデータの URL、製品や会社名、バージョンなどのビルド設定が含まれています。構成の定義の詳細については、ウェブテンプレートビルド設定とインタラクションを参照してください。
onProgress(progress) {...} ウェブローダーは、ダウンロードの進捗状況が更新されるたびに onProgress コールバックオブジェクトを呼び出します。onProgress コールバックに付属する progress 引数は、ロードの進捗状況を 0.0 から 1.0 の間の値で決定します。
onSuccess(unityInstance) {...} onSuccess コールバックは、ビルドが正常にインスタンス化された後に呼び出されます。作成された Unity インスタンスオブジェクトが引数として提供されます。このオブジェクトは、ビルドとのインタラクションに使用できます。
onError(message) {...} onError コールバックは、ビルドのインスタンス化の間にエラーが発生した場合に呼び出されます。エラーメッセージは引数として提供されます。

createUnityInstance() 関数は、ビルドローダースクリプトで定義され、インスタンス化されたビルドに特有です。したがって、同じ HTML ドキュメントに 2 つ以上のビルドを埋め込む場合は、対応するビルドローダースクリプトの onload コールバックから createUnityInstance() 関数が呼び出されることを確認してください。Unity ウェブローダーの詳細については、ウェブ Build フォルダーウェブテンプレートの構造体とインスタンス化を参照してください。

追加リソース

カスタムウェブテンプレートを追加する
ウェブテンプレート変数