Как загрузить сценарии, необходимые для единства набора ресурсов? - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю над проектом Unity, в котором игровая сцена загружается и запускается во время выполнения. Я заставляю его работать, создавая набор ресурсов сцены и загружая его, но проблема, с которой я сталкиваюсь, заключается в том, что сценарии, необходимые сцене, не включены в набор ресурсов. Я только что застрял здесь, может кто-нибудь, пожалуйста, помогите мне, как я могу загрузить / загрузить необходимые скрипты или , как я могу включить их в комплект ресурсов. , чтобы я мог загрузить их втакже во время выполнения.

Извините за плохой английский. Спасибо.

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете добавить любой тип актива в пакет активов. Сценарий (файл .cs) не сможет быть включен в пакет активов.

То, как вы можете добавить все сценарии /материалы / .., которые вам нужны, зависит от того, что включено в вашу сцену, это хранить их все в папке. Затем вы можете назначить всю папку для AssetBundle tag, как и должна быть ваша сцена.

Example

Ваша сцена, которую клиент должен загрузить, должна находиться в том же активе -bundle tag .

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

Теперь вы можете запустить метод создания пакета для вас, как показано ниже:

[MenuItem("Bundles/Create all bundles")]
static void BuildAllAssetBundles()
{
    BuildPipeline.BuildAssetBundles(Path.Combine(Application.dataPath, "AssetBundleLocation"), BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}

Там - дополнительная информация о Как создать пакет активов .

Теперь все необходимые файлы должны храниться в файле пакета активов, «Редактировать», кроме файлов сценариев . Взгляните на UnityEngine.AssetBundle класс для загрузки и выгрузки пакетов / ресурсов.


Edit

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

Эти файлы будут содержать строку после загрузки из пакета активов.

AssetBundle ab = AssetBundle.LoadFromFile(Path.Combine(Application.dataPath, "StreamingAssets/exampleassetbundle")); // Your asset-bundle path
TextAsset textAsset = ab.LoadAsset<TextAsset>(ab.GetAllAssetNames()[0]); // In my example I only have 1 file in the asset-bundle, the TextAsset
string flatCode = textAsset.text;

Теперь дело в том, что вы должны скомпилировать код плоской строки в настоящий класс C #. Это называется Компиляция во время выполнения .

Существует множество обучающих программ о том, как это сделать, , как в этом стековом посте .

Это немного сложно,но будет делать то, что вы хотите.

Примечание: IOS и Android могут не позволить вам скомпилировать код во время выполнения, поэтому в зависимости от вашей целевой платформы вам придется продолжить исследование.

...