Как правильно загрузить сборные - PullRequest
0 голосов
/ 25 января 2019

Я хочу создать префаб по его имени (и пути), который исходит от моего сервера, из папки «Активы» и столкнулся с некоторыми проблемами.Я нашел несколько способов сделать это:

var prefab = Instantiate(Resources.Load("prefabName")) as GameObject;

Это предложено большинством потоков, но, как описано здесь , вы не должны его использовать.

var prefab = Instantiate(UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path));

ЭтоВторой способ, который я нашел, но это будет работать только при работе внутри редактора.Например, сборка проекта в WebGl немедленно приведет к ошибке сборки.

Итак, каков правильный способ создания префаба?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Импортируете ли вы активы в уже созданную игру? Или вы ссылаетесь на активы, которые уже есть в вашем проекте?

Потому что, если вы хотите импортировать во время выполнения , вы можете использовать AssetBundles. К сожалению, я не могу вам в этом помочь, поскольку у меня нет реального опыта работы с ними, но я где-то читал, что многие разработчики мобильных приложений используют их для распределения своих ресурсов при запуске игры.

Может быть, Руководство по комплектации активов поможет вам в этом.

Если вы хотите создать префабы, которые уже есть в вашем проекте , вы можете использовать Dictionary<string,GameObject>. Вот так:

public Dictionary<string, GameObject> prefabDict = new Dictionary<string, GameObject>();


public void SpawnPrefabFromDict(string name)
{
    Instantiate(prefabDict[name]);
}

Строка в качестве ключа затем указывает на ее значение - ваш префаб!

Надеюсь, это поможет! Удачи!

0 голосов
/ 25 января 2019

Почему бы просто не добавить (сериализуемое) поле в MonoBehaviour:

[SerializeField] private GameObject myPrefab;

или

public GameObject MyPrefab;

Перетащите ваш префабв инспекторе, а затем ниже в вашем коде:

GameObject clone = Instantiate(myPrefab);

Разница с этим подходом заключается в том, что ваш префаб предварительно загружается в память, т.е. когда вы создаете экземпляр, который вы читаете из памяти (в отличие отна диск).

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