SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

全般 Prefab をアセットバンドルに入れる際の注意点はありますか? #128

Open sagat64 opened 9 years ago

sagat64 commented 9 years ago

お世話になります。

ss5test.sspj というプロジェクトを Unityに取り込み、 生成された Prefab "ss5test_Control" を Instantiate し、正しく表示できました。

次に、このデータをアセットバンドルに移動しました (=Prefab である "ss5test_Control" を、ABにいれた)

すると、 Unity メニューバーの「AssetBundle -> Simulate AssetBundle」を有効にすると、 正しく動作するのですが、 上記のチェックを外すと以下の Instantiate で NULLが返ってきます(=失敗します)。

<Script_SpriteStudiuo_LinkPrefab.cs line 73>

if UNITY_EDITOR

            Instance = (GameObject)PrefabUtility.InstantiatePrefab(LinkPrefab);

<補足> ・Hierarchy に ss5test_Control(Clone)は作成されておりますので、   プレファブ "ss5test_Control" の Instantiate は成功して、   連続して呼ばれる プレファブ "ssttest" の Instantiate で失敗しているようです。

・繰り返しですが、  Unity メニューバーの「AssetBundle -> Simulate AssetBundle」を有効にすると問題なく表示できます。

・Unity5.1 を使っています。

ss5 のデータをアセットバンドルに入れる場合に、 注意点などございますでしょうか?

MasamiYitsuse commented 9 years ago

お世話になっております。

現状当方で把握しているアセットバンドル作成時の注意点としては、 [Edit]-[Project Settings]-[Graphics]内の「Always Included Shaders」に「SpriteSpriteStudio〜.shader」のシェーダを定義しておかないと、特にシーン内にあらかじめ配置したものではなく・スクリプトからInstantiateなどを行っているような場合に、Unityが「使用していないもの」とみなして、アセットバンドルに含まない ……という事象が確認されております。

上記以外について、当方が現状明確に把握しているアセットバンドル作成時の注意点はございませんが、当方が未把握の注意点などが既存している可能性も低くありません。 アセットバンドルについてはアプリケーション側での様々な都合などもあり、一概に状況を推測しづらい点もございますため、原則論的なところになってしまい大変申し訳ございませんが……スクリプトからInstantiateするオブジェクト群についてはその使用素材やプレハブなどを、あらかじめ明示的にアセットバンドルに含むものとして定義してやる必要があるかもしれません。 ※アセットバンドル作成時の注意点については、情報などがある一定精度で集まってきましたら、本wiki上に記載を追加していこうとは思っております。

お忙しい中大変申し訳ございませんが、何卒よろしくお願いいたします。

sagat64 commented 9 years ago

早速のお返事、心から感謝いたします。ありがとうございます。

いろいろ試した結果、以下の修正で解決しました。

<Script_SpriteStudio_LinkPrefab.cs line 72>

if UNITY_EDITOR

    //Instance = (GameObject)PrefabUtility.InstantiatePrefab(LinkPrefab);
            Instance = (GameObject)Instantiate(LinkPrefab);

else

    Instance = (GameObject)Instantiate(LinkPrefab);

endif

コメントアウトした行が修正前で、その下が修正後です。 PrefabUtility.InstantiatePrefab() だとマズイようです。

追加情報がわかったら、また書き込ませていただきます。 ありがとうございました。

MasamiYitsuse commented 9 years ago

お世話になっております。

お手数をおかけして申し訳ございません。 また、情報ありがとうございます。 後のバージョンアップの際に、頂いた情報を元に改良を行わせて頂きたく思います。

重ねて、情報のご提供、心から御礼申し上げます。 何卒今後とも宜しくお願いいたします。