1

インターネットからダウンロードしたさまざまなシーンをロードできるシンプルなUnityアプリケーションを作成しました。シーンにスクリプトが含まれていない場合に最適です。GameObjectに接続されたスクリプトがある場合、次のエラーで失敗します。

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を呼び出すため、シーンに残ります。

Unity3D3.5.0および3.5.1を介してこのシナリオを確認しました

どこで間違えますか?

どうもありがとう。

4

2 に答える 2

1

残念ながら、Unity3D はセキュリティ上の理由からアセット バンドル内のスクリプトをブロックするため、私のシナリオは定義上機能しません。

于 2012-04-28T20:39:06.270 に答える
0

スクリプトはアセット バンドルに含めることができますが、アセット バンドルをロードするプロジェクトにも含める必要があり、アセット バンドル内のスクリプトとロード プロジェクトはメタ ファイルを共有する必要があります。

アセット バンドルをロードする同じプロジェクトからアセット バンドルをビルドすると、これは自動的に行われます。別のプロジェクトを使用してアセット バンドルをビルドしている場合は、リビジョン コントロールを使用して、これらのスクリプトが同期されていることを確認する必要があります。

于 2015-08-21T21:38:52.547 に答える