2012-04-27 2 views
1

Я создал простое приложение Unity, которое позволяет загружать разные сцены, загруженные из Интернета. Он отлично работает, если сцена не содержит скриптов. Если есть сценарий связан с GameObject он терпит неудачу с ошибкой:Скрипты в сценах, загружаемых через Application.LoadLevel, не работают

The class defined in script file named 'XXX' does not match the file name! 

Если эта сцена запускается как отдельный скрипт приложения работает без каких-либо проблем, но если эта сцена сохраняется через BuildPipeline.BuildStreamedSceneAssetBundle я получил описано ошибка.

загружаю сцены с помощью простого кода:

WWW www = new WWW("file://" + file); 
    yield return www; 

    loadedBundle = www.assetBundle; 
    Application.LoadLevel(name); 

Основной сценарий остается в сцене, потому что я называю DontDestroyOnLoad для него.

Я проверил этот сценарий с помощью Unity3D 3.5.0 и 3.5.1

Где я делаю ошибку?

Большое спасибо.

ответ

1

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

+0

Уверены ли вы? В [документации] (http://docs.unity3d.com/Documentation/Manual/scriptsinassetbundles.html) говорится, что все в порядке включать скрипты в пакеты, за исключением iOS (из-за ограничений Apple). –

+1

Я уверен. Вы можете включить скрипт, но только как байтовый код. Проверьте мой другой вопрос: http://stackoverflow.com/questions/10808033/how-to-compile-unity3d-script-to-include-it-to-assetbundle –

0

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

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

Смежные вопросы