почему нам нужно создать экземпляр загруженного актива после LoadAsset в Unity AssetBundle? - PullRequest
0 голосов
/ 21 октября 2018

В руководстве по использованию AssetBundle, https://docs.unity3d.com/Manual/AssetBundles-Native.html

Я вижу, что при использовании LoadAsset загружается GameObject, почему мы должны сделать дополнительный шаг Instantiate it?это создаст еще одну копию префаба, я запутался, почему мы не используем загруженный prefab GameObject напрямую?

public class LoadFromFileExample extends MonoBehaviour {
    function Start() {
        var myLoadedAssetBundle = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, "myassetBundle"));
        if (myLoadedAssetBundle == null) {
            Debug.Log("Failed to load AssetBundle!");
            return;
        }
        var prefab = myLoadedAssetBundle.LoadAsset.<GameObject>("MyObject");
        Instantiate(prefab); // why do not use prefab directly ?
    }
}

1 Ответ

0 голосов
/ 21 октября 2018

Создание префабов действительно не имеет ничего общего с AssetBundle.То же самое при использовании API Resources.Load.Прежде чем ответить на этот вопрос, вам необходимо понять, что это за сборник.

Сборники просто GameObjects и Components собраны вместе и сделаны для многократного использования .Он используется для того, чтобы, если вы хотите использовать один и тот же тип объекта, вам не придется каждый раз вручную создавать их снова и снова.Вы просто создаете экземпляр уже созданного и сохраненного префаба.Это действительно важно, когда вы хотите разделить ресурсы между несколькими сценами.

Когда вы загружаете сборный блок, он сохраняется только в памяти, ожидающей использования или создания экземпляра.Это не видно на сцене или на вкладке Иерархия.Нет никакой причины, по которой функция загрузки должна создавать экземпляр prefab, потому что он может вам не понадобиться, когда он загружается.Обычно префабы загружаются во время загрузки игры, а затем создаются соответствующие префабы во время выполнения, когда это необходимо.

Наконец, создавая префаб, ящики копируют его и помещают в сцену.Любая операция должна выполняться над созданным экземпляром загруженного префаба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...