Untuk membuat build untuk WebGL, pergi ke File > Build Settings dari menu utama Unity. Dalam daftar Platform, pilih WebGL dan kemudian klik Switch Platform.
Ketika Anda telah mengkonfigurasi Pengaturan Build, pilih satu opsi berikut:
Sistem build Unity untuk WebGLLogin API yang membuat grafis 2D dan 3D di browser web. Opsi build Unity WebGL memungkinkan Unity untuk mempublikasikan konten sebagai program JavaScript yang menggunakan teknologi HTML5 dan WebGL rendering API untuk menjalankan konten Unity di browser web. More info
Lihat di Glossary mendukung pengaturan berikut:
Setting | Function | |
---|---|---|
Texture CompressionA method of storing data that reduces the amount of storage space it requires. See Texture Compression, Animation Compression, Audio Compression, Build Compression. See in Glossary |
Format texture compressionPerangkat keras grafis 3D memerlukan Tekstur untuk dikompresi dalam format khusus yang dioptimalkan untuk pengambilan sampel Tekstur cepat. More info Lihat di Glossary untuk digunakan untuk membangun. Pilihannya adalah: |
|
Use Player Settings | Ini adalah pilihan default. Ini menggunakan format kompresi tekstur yang Anda set di jendela Pengaturan pemainPengaturan yang memungkinkan Anda mengatur berbagai pilihan khusus pemain untuk permainan akhir yang dibangun oleh Unity. More info Lihat di Glossary. |
|
ETC2 | Menggunakan format ETC2, yang banyak didukung pada perangkat seluler. | |
ASTC | Menggunakan format ASTC, yang banyak didukung pada perangkat seluler. | |
DXT | Menggunakan format DXT, yang banyak didukung pada perangkat desktop. | |
Development BuildA development build includes debug symbols and enables the Profiler. More info See in Glossary |
Aktifkan pengaturan ini untuk menyertakan simbol debug scripting dan Profiler di build Anda. Ketika Anda mengaktifkan ini, Unity menetapkan skrip DEVELOPMENT_BUILD mendefinisikan. Anda harus menggunakan pengaturan ini hanya ketika Anda ingin menguji aplikasi Anda. Perhatikan bahwa pembangunan membangun tidak menambang konten, yang berarti pembangunan membangun sangat besar untuk mendistribusikan. |
|
Code Optimization | Pilih mode optimasi untuk digunakan untuk membandingkan kode WebGL. | |
Speed | Ini adalah pengaturan default. Memilih ini menghasilkan kode WebGL yang dioptimalkan untuk kinerja runtime. | |
Size | Memilih ini menghasilkan WebGL kode yang dioptimalkan untuk membangun ukuran. Ini berguna ketika membangun game WebGL untuk berjalan di browser seluler di Android dan iOS, di mana opsi mengoptimalkan-for-speed default akan menghasilkan file WebAssembly yang lebih besar untuk perangkat seluler untuk dikonsumsi. | |
Autoconnect Profiler | Biasanya, ketika diaktifkan, pengaturan ini memungkinkan Anda untuk secara otomatis menghubungkan Unity Profiler untuk membangun Anda. Namun untuk WebGL, karena Anda tidak dapat menghubungkan ProfilerJendela yang membantu Anda untuk mengoptimalkan permainan Anda. Ini menunjukkan berapa banyak waktu yang dihabiskan di berbagai bidang permainan Anda. Sebagai contoh, dapat melaporkan persentase waktu yang dihabiskan rendering, aimating, atau dalam logika permainan Anda. More info Lihat di Glossary ke build yang berjalan, gunakan opsi ini untuk menghubungkan konten ke Editor. Ini karena koneksi Profiler ditangani menggunakan WebSockets di WebGL, tetapi browser web hanya memungkinkan koneksi keluar dari konten. Untuk pengaturan ini tersedia, Anda harus mengaktifkan opsi Development Build. |
|
Deep Profiling | Aktifkan pengaturan ini untuk menyalakan Profil di Profiler. Ini membuat instrumen Profiler setiap panggilan fungsi dalam aplikasi Anda dan mengembalikan data profil yang lebih rinci. Ketika Anda mengaktifkan Dukungan Profil Dalam, mungkin memperlambat eksekusi skrip. Opsi ini hanya tersedia jika Anda mengaktifkan opsi Development Build. | |
Build | Gunakan aplikasi Anda. | |
Build And Run | Gunakan untuk melihat WebGL Player secara lokal. Unity menggunakan server web lokal untuk menghosting build Anda, dan membukanya dari URL localhost. Atau, Anda dapat menggunakan server web lokal kustom dengan header respons yang dikonfigurasi dengan benar. Untuk informasi lebih lanjut, lihat Membangun terkompresi dan konfigurasi server. |
Untuk mengubah pengaturan untuk Asset Import Overrides, lihat Membangun Pengaturan.
Folder Build
berisi file berikut ([ExampleBuild]
mewakili nama folder build target).
Nama file | Contains |
---|---|
[ExampleBuild].loader.js |
Kode JavaScript yang diperlukan halaman web untuk memuat konten Unity. |
[ExampleBuild].framework.js |
JavaScript runtime dan plugin. |
[ExampleBuild].wasm |
WebAssembly biner. |
[ExampleBuild].mem |
Gambar biner untuk menginisialisasi memori heap untuk Pemain Anda. Unity hanya menghasilkan file ini untuk membangun WebAssembly multi-threaded. |
[ExampleBuild].data |
Data aset dan ScenesAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info Lihat di Glossary. |
[ExampleBuild].symbols.json |
Nama simbol debug perlu untuk mengubah jejak tumpukan kesalahan. File ini hanya dihasilkan untuk membangun Rilis ketika Anda mengaktifkan opsi Simbol Debug (File > Build Settings > Player Settings.) |
[ExampleBuild].jpg |
Gambar latar belakang, yang menampilkan sementara build memuat. File ini hanya dihasilkan ketika Gambar Latar Belakang disediakan dalam Pengaturan Pemain (File > Build Settings > Player Settings > Splash Image. Lihat halaman Layar Splash untuk informasi lebih lanjut. |
Jika Anda mengaktifkan Compression Method untuk membangun Anda, Unity mengidentifikasi ekstensi yang sesuai dengan metode kompresi dan menambahkan ekstensi ini ke nama file di dalam Build subfolder. Jika Anda mengaktifkan Decompression Fallback, Unity menerapkan ekstensi .unityweb
ke nama file build. Jika tidak, Unity menerapkan ekstensi .gz
untuk metode kompresi Gzip, atau .br
untuk metode kompresi Brotli. Untuk informasi lebih lanjut, lihat WebGL: Membangun terkompresi dan konfigurasi server.
Jika Anda mengaktifkan Name Files As Hashes di Player Settings, Unity menggunakan hash konten file bukan nama file default. Ini berlaku untuk setiap file di folder build. Opsi ini memungkinkan Anda untuk meng-upload versi terbaru dari permainan membangun ke folder yang sama di server, dan hanya mengunggah file yang telah berubah antara membangun iterasi.
Note: Membuka Pemain langsung dari sistem file mungkin tidak bekerja di beberapa browser. Ini karena pembatasan keamanan yang diterapkan pada URL file lokal.
Aktifkan pengaturan Deep Profiling Support untuk membuat profil Unity Profiler setiap panggilan fungsi dalam aplikasi Anda. Untuk informasi lebih lanjut lihat dokumentasi pada Profil.
Buka Publishing Settings untuk mengakses Enable Exceptions. Enable Exceptions memungkinkan Anda untuk menentukan perilaku kode yang tidak terduga (juga dikenal sebagai kesalahan) ditangani pada waktu berjalan. Ini memiliki opsi ini:
throw
di scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More infofinally
disebut. Perhatikan bahwa memilih opsi ini membuat kode JavaScript yang dihasilkan dari skrip Anda lebih lama dan lebih lambat; Ini mungkin hanya menjadi masalah jika skrip adalah kemacetan utama dalam proyek Anda.throw
di skrip Anda (sama dengan opsi Jelas Lempar Kecuali Sitemap)
Untuk mengakses Data Caching, pergi ke Publishing Setings melalui File > Build Settings > Player Settings > WebGL. Ini memungkinkan browser untuk menyimpan file data utama ke database IndexedDB.
Menggunakan cache HTTP browser default tidak menjamin bahwa cache browser respons tertentu. Ini karena cache HTTP browser memiliki ruang terbatas, dan browser mungkin tidak dapat cache file yang terlalu besar.
Untuk meningkatkan kecepatan pemuatan Anda, IndexedDB memungkinkan Anda untuk menyimpan file di atas batas browser. Ketika Anda melihat lebih banyak file, Anda meningkatkan kemungkinan bahwa konten yang diunduh tersedia pada mesin pengguna selama perjalanan berikutnya dari build.
Data Caching hanya cache file .data
di cache IndexedDB untuk tanggapan HTTP. Untuk cache AssetBundles, Anda perlu mengaktifkan Data Caching dan override unityInstance.Module.cacheControl()
. Untuk melakukan ini, pastikan pengembalian Module.cacheControl(url)
must-revalidate
untuk URL Aset yang diminta. Misalnya, Anda dapat menimpa fungsi unityInstance.Module.cacheControl() dalam panggilan pemenuhan Promise yang membuatUnityInstance() kembali. Untuk informasi lebih lanjut tentang createUnityInstance() lihat WebGL: Membangun terkompresi dan konfigurasi server.
Pengaturan kompresi tekstur di WebGL memungkinkan Anda membuat membangun platform target berdasarkan format kompresi tekstur yang mereka dukungan. Nilai format kompresi tekstur yang Anda set di sini memiliki prioritas atas nilai format kompresi tekstur Pengaturan pemain. Untuk menjalankan permainan Anda di kedua browser desktop dan seluler dengan tekstur terkompresi, Anda mungkin ingin membuat dua build: * Menargetkan browser desktop dengan DXT set sebagai format kompresi tekstur * Menargetkan peramban seluler dengan ASTC set sebagai format kompresi tekstur
Anda dapat menjalankan build untuk browser desktop dan browser seluler dengan format kompresi tekstur yang sesuai secara bersamaan menggunakan skrip. Contoh:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Diagnostics;
using System.IO;
using UnityEditor.Build.Reporting;
public class comboBuild
{
//This creates a menu item to trigger the dual builds https://docs.unity3d.com/ScriptReference/MenuItem.html
[MenuItem("Game Build Menu/Dual Build")]
public static void BuildGame()
{
//This builds the player twice: a build with desktop-specific texture settings (WebGL_Build) as well as mobile-specific texture settings (WebGL_Mobile), and combines the necessary files into one directory (WebGL_Build)
string dualBuildPath = "WebGLBuilds";
string desktopBuildName = "WebGL_Build";
string mobileBuildName = "WebGL_Mobile";
string desktopPath = Path.Combine(dualBuildPath, desktopBuildName);
string mobilePath = Path.Combine(dualBuildPath, mobileBuildName);
string[] scenes = new string[] {"Assets/scene.unity"};
EditorUserBuildSettings.webGLBuildSubtarget = WebGLTextureSubtarget.DXT;
BuildPipeline.BuildPlayer(scenes, desktopPath, BuildTarget.WebGL, BuildOptions.Development);
EditorUserBuildSettings.webGLBuildSubtarget = WebGLTextureSubtarget.ASTC;
BuildPipeline.BuildPlayer(scenes, mobilePath, BuildTarget.WebGL, BuildOptions.Development);
// Copy the mobile.data file to the desktop build directory to consolidate them both
FileUtil.CopyFileOrDirectory(Path.Combine(mobilePath, "Build", mobileBuildName + ".data"), Path.Combine(desktopPath, "Build", mobileBuildName + ".data"));
}
}
Akhirnya, Anda dapat memodifikasi file WebGL template index.html
untuk memilih file data yang sesuai jika ada dukungan untuk ekstensi format kompresi tekstur:
// choose the data file based on whether there's support for the ASTC texture compression format
var dataFile = "/{{{ DATA_FILENAME }}}";
var c = document.createElement("canvas");
var gl = c.getContext("webgl");
var gl2 = c.getContext("webgl2");
if ((gl && gl.getExtension('WEBGL_compressed_texture_astc')) || (gl2 &&
gl2.getExtension('WEBGL_compressed_texutre_astc'))) {
dataFile = "/WebGL_Mobile.data";
}
var buildUrl = "Build";
var loaderUrl = buildUrl + "/{{{ LOADER_FILENAME }}}";
var config = {
dataUrl: buildUrl + dataFile,
frameworkUrl: buildUrl + "/{{{ FRAMEWORK_FILENAME }}}",
#if USE_WASM
codeUrl: buildUrl + "/{{{ CODE_FILENAME }}}",
#endif
#if MEMORY_FILENAME
memoryUrl: buildUrl + "/{{{ MEMORY_FILENAME }}}",
#endif
#if SYMBOLS_FILENAME
symbolsUrl: buildUrl + "/{{{ SYMBOLS_FILENAME }}}",
#endif
streamingAssetsUrl: "StreamingAssets",
companyName: {{{ JSON.stringify(COMPANY_NAME) }}},
productName: {{{ JSON.stringify(PRODUCT_NAME) }}},
productVersion: {{{ JSON.stringify(PRODUCT_VERSION) }}},
showBanner: unityShowBanner,
};