Собрал лайтмапу в бандль. Это билд на WebGL.
Начинал все с этой темы
viewtopic.php?f=105&t=39470В справке скриптов есть тема как собрать в бандл целую сцену, но я этим скриптом не пользовался, а собираю сцену используя стандартный скрипт сборки бандлов, только как бандл задаю файл сцены
https://docs.unity3d.com/Manual/Buildin ... ndles.htmlскрипт сборки - в папку Editor
Используется csharp
using UnityEditor;
public class CreateAssetBundles
{
[MenuItem ("Assets/Build AssetBundles")]
static void BuildAllAssetBundles ()
{
//BuildPipeline.BuildAssetBundles ("Assets/mybundle");
BuildPipeline.BuildAssetBundles( "Assets/mybundle", BuildAssetBundleOptions.None, BuildTarget.WebGL );
}
}
Но загружаю на сцену бандл скриптом из темы про сборку в бандл целой сцены, а не стандартным скриптом загрузки бандлов.
Используя эту тему
https://docs.unity3d.com/ScriptReferenc ... undle.htmlскрипт загрузки бандла с сервера - в любую папку
Используется csharp
using System;
using UnityEngine;
using System.Collections;
public class CachingLoadExample2 : MonoBehaviour {
public string BURL = "https://7days.com/mybundle/mshop.jpg";
private WWW www;
public Texture aTexture2;
public GUISkin st;
IEnumerator Start () {
// Download compressed scene. If version 5 of the file named "Streamed-Level1.unity3d" was previously downloaded and cached.
// Then Unity will completely skip the download and load the decompressed scene directly from disk.
www = http://WWW.LoadFromCacheOrDownload (BURL , 5);
yield return www;
// Handle error
if (http://www.error != null)
{
Debug.LogError(http://www.error);
yield break;
}
// In order to make the scene available from LoadLevel, we have to load the asset bundle.
// The AssetBundle class also lets you force unload all assets and file storage once it is no longer needed.
var bundle = http://www.assetBundle;
// Load the level we have just downloaded
//имя сцены которая експортировалась в бандл, а не та с которой вы запускаете этот скрипт
Application.LoadLevelAdditive ("shopscene1_2");
//bundle.Unload(false);
this.enabled = false;
}
void OnGUI () {
//GUI.skin = st;
// иметь камеру на сцене для работы гуи
GUI.Label(new Rect(10,135,400,50), "ggg ");
if (!www.isDone) {
float a;
a = http://www.progress * 100.0f;
GUI.color = Color.red;
GUI.Label (new Rect (Screen.width / 2 - 150, Screen.height / 2 - 30, 400, 30), "Please wait, level is loading " + a.ToString ("0.00") + " %");
GUI.color = Color.white;
GUI.Box (new Rect (Screen.width / 2 - 200, Screen.height / 2, a * 4, 20), aTexture2);
}
}
}
Тут только в одной строчке Application.LoadLevelAdditive ("shopscene1_2"); поменяно на Additive. Потому что легче подгрузить бандл на существующую сцену, а не переходить на новую с потерей объектов. Тут получается по аналогии с подгрузкой обычного бандла на сцену и лайтмапы добавляются.
Еще одна неприятная вещь, в браузере почти нереально вычистить из кеша прошлый бандл - стандартными средствами браузера не выгружается
В юнити едиторе тоже в кеше постоянно висит старый бандл. В едиторе с этой проблемой справится легко, советуют вот такой скрипт для очистки кеша в едиторе. Он появится в меню вверху в тулсах
Используется csharp
using UnityEngine;
using UnityEditor;
using System.Collections;
///
/// An editor script which deletes cache info.
///
/// NOTE:
/// Delete all AssetBundle content that has been cached by the current application.
/// This function is not available to WebPlayer applications that use the shared cache.
///
/// See Also:
/// http://docs.unity3d.com/Documentation/S ... Cache.html
///
///
public class CacheTools : ScriptableObject
{
[MenuItem ("Tools/Cache/Clean")]
public static void CleanCache ()
{
if (Caching.CleanCache ())
{
Debug.LogWarning ("Successfully cleaned all caches.");
}
else
{
Debug.LogWarning ("Cache was in use.");
}
}
}