Описание
Создает набор ресурсов, используя хэш для идентификатора объекта, хранящегося в наборе ресурсов.
Это позволяет перестраивать набор ресурсов и ссылаться на них напрямую. При перестроении пакета ресурсов объекты в нем гарантированно будут иметь тот же идентификатор после перестроения пакета ресурсов. Из-за того, что это 32-битное хеш-пространство, если у вас много объектов в комплекте ресурсов, это увеличит вероятность конфликтов хэшей. В этом случае Unity выдаст ошибку и не создаст пакет ресурсов. Хэш основан на GUID актива и локальном идентификаторе объекта в активе. Детерминированные AssetBundle также загружаются медленнее, чем обычные пакеты ресурсов, это связано с тем, что API потоковой фоновой загрузки обычно ожидает, что объекты будут упорядочены таким образом, чтобы чтение уменьшало поиск. С детерминированными наборами активов это невозможно.
Примечание. Эта функция всегда включена.
//Create a folder (right click in the Assets folder and go to Create>Folder), and name it “Editor” if it doesn’t already exist
//Place this script in the Editor folder
//This script creates a new Menu named “Build Asset” and new options within the menu named “Normal” and “Deterministic Asset Bundle”. Click these menu items to build an AssetBundle into a folder with different build options.
using UnityEngine;
using UnityEditor;
public class Example : MonoBehaviour
{
//Creates a new menu (Build Asset Bundles) and item (Normal) in the Editor
[MenuItem("Build Asset Bundles/Normal")]
static void BuildABsNone()
{
//Create a folder to put the Asset Bundle in.
// This puts the bundles in your custom folder (this case it's "MyAssetBuilds") within the Assets folder.
//Build AssetBundles with no special options
BuildPipeline.BuildAssetBundles("Assets/MyAssetBuilds", BuildAssetBundleOptions.None, BuildTarget.StandaloneOSX);
}
//Creates a new item (Deterministic) in the new Build Asset Bundles menu
[MenuItem("Build Asset Bundles/Deterministic ")]
static void BuildABsDeterministic()
{
//Build the AssetBundles in this mode
BuildPipeline.BuildAssetBundles("Assets/MyAssetBuilds", BuildAssetBundleOptions.DeterministicAssetBundle, BuildTarget.StandaloneOSX);
}
}