SpriteStudio / SS5PlayerForUnity

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

v1.4.6 Unity5.5にてiOSビルドで長方形のテクスチャを使用すると正方形になってしまいます #192

Open YutakaNagayama opened 7 years ago

YutakaNagayama commented 7 years ago

お世話になります。 現在開発中のタイトルにて ss5PlayerForUnity 1.4.6 を使用させて頂いております。 Unity 5.4.x までは正常に表示できていたのですが、 Unity を 5.5 へ上げたところ、新しくインポートするデータが正常に表示されなくなってしまいます。 データがおかしいかもしれないと、 Unity 5.4 の方でインポートすると正常に表示されます。 またUnity 5.4 でインポートした状態で、Unityプロジェクトを 5.5 に変更した場合も正常に表示できます。 Unity 5.5 でインポートした場合のみ正常に表示できないのですが、Unity5.5に関してはまだ未対応ということでよろしいのでしょうか?

DKAlpha commented 7 years ago

ご報告ありがとうございます。 Unityのバージョンによって挙動が違うという事で、報告いただきました現象を調査いたしましてこちらで報告させていただきますのでお時間をいただければと思います。

YutakaNagayama commented 7 years ago

追加報告です。 作成したSpriteStudoのデータですが、テクスチャが512x256なのですが、これをUnity5.5環境で取り込むとCellMapのサイズが512x512になっており絵が崩れて表示されていました。 手動でCellMapサイズを512x256に直すと正常な絵が表示されました。

DKAlpha commented 7 years ago

検証ありがとうございます。 いただきました情報を元に、テクスチャが長方形のアニメーションデータを作成し、SS5PlayerForUnity1.4.6とUnity5.5.0fの組み合わせでインポートしてみましたが、セルマップのサイズが長方形となる現象が再現できずにおります。 原因を特定したいと考えておりますので、お手数ではございますが現象が再現できるSpriteStudioのアニメーションデータ一式(sspj一式)を以下のアドレス github-spritestudio@webtech.co.jp まで送っていただく事は可能でしょうか? 権利的に問題のある画像データの場合は、色のある部分を塗りつぶすなどしていただければと思いますので、ご検討ください。 よろしくお願いいたします。

YutakaNagayama commented 7 years ago

サンプルデータを送りました。

追加情報です。 BuildSettingがiOSの場合に 512x512で取り込まれるようです。 Androidの場合は512x256で取り込まれました。 とりあえずBuildSettingをAndroidにして作業を行えば大丈夫そうです。

DKAlpha commented 7 years ago

データと追加情報の方ありがとうございました。 調査しまして進展がありましたこちらで報告させていただきます。

DKAlpha commented 7 years ago

iOSビルドの場合にのみ発生するという事ですが、Unityの仕様としてiOSでは圧縮テクスチャにPVRTCを使用し、PVRTCは長方形のテクスチャをサポートしていないという事によるものではないかと思われます。

・Unity - マニュアル: Unity iOS が現在サポートしていない機能 https://docs.unity3d.com/jp/current/Manual/iphone-unsupported.html こちらの記述に *長方形テクスチャは、PVRTC 形式での圧縮ができません。とありますのでPVRTC以外の圧縮形式を使用する、圧縮しないなどで回避できるかもしれません。

YutakaNagayama commented 7 years ago

Unity5.4のときは長方形テクスチャもそのまま取り込めていましたので、 おそらくUnity5.5のテクスチャインポート周りの変更が影響しているのではないかと思います。 ですのでSS5PlayerというよりUnity側のデフォルト処理の仕様変更が問題なのかもしれません。 ちょっと自分もUnityは最近触り始めたばかりなので、把握しきれていないところが多くて申し訳有りません。

YutakaNagayama commented 7 years ago

ちなみにテクスチャ単体で取り込んだ場合は(pngファイルをProjectにドロップ)、512x256のテクスチャで取り込まれるので、何か取り込み周りの設定なのかもしれません。

DKAlpha commented 7 years ago

Unity5.5のアップデート記事 https://blogs.unity3d.com/jp/2016/08/30/get-the-unity-5-5-beta-now/

こちらに「Unityの テクスチャーインポーター が改善され、テクスチャーの形式を圧縮方式から切り離したり、テクスチャー形状をテクスチャータイプから切り離すオプションが追加されました。」とありますので、Unity5.5でインポート部分に大きく変更が入ったようですね。

いくつか情報を調べたところPVRTCを作成する場合に正方形にするような挙動になるようなことが書かれているページもありましたのでバージョンによって挙動が変わるという事なのかもしれません。

マルチプラットフォームで作成する場合は素材を正方形で作成していただくと安全かと思います。

YutakaNagayama commented 7 years ago

とりあえず検証中にいくつか回避方法も見つかりましたので、 テクスチャサイズの件も含め検討してみます。 ありがとうございました。

YutakaNagayama commented 7 years ago

クローズしますね。

DKAlpha commented 7 years ago

こちらのIssueはほかのユーザー様への情報共有もかねてopenにしたままとさせていただいております。 またタイトルの方を内容に合わせた形に変更させていただきます。 ご理解いただけますと幸いです。

DKAlpha commented 7 years ago

追って追加情報ですが、ビルドするプラットフォームをiOSに変更するタイミングでテクスチャ情報が正方形に変更されるという挙動のようです。 おそらくドラッグで追加した後に、プラットフォームを変更してiOSにすると同じ現象が発生するのではないかと思われます。

今後ともSpriteStudioをよろしくお願いいたします。

YutakaNagayama commented 7 years ago

お世話になります。 根本の原因がわかりましたのでご報告します。

Unity5.5のプロジェクトで SS5PlayerForUnityのアセットを追加した際の  API Update Required を実行していたのが原因のようです。 これを実行しないで該当データをインポートするとちゃんと長方形テクスチャになりました。

ちなみに、Unity5.4のときも  API Update Required は実行していたのですが、 LibraryEditor_SpriteStudio.csの4486行あたり  Importer.textureType = TextureImporterType.Advanced; の部分が Unity5.4では変化ありませんでしたが、 Unity5.5では  Importer.textureType = TextureImporterType.Default; に書き換えられていました。 ここを  Importer.textureType = TextureImporterType.Advanced; もしくは  Importer.textureType = TextureImporterType.Sprite; にすると、長方形テクスチャを取り込めるようになりました。

MasamiYitsuse commented 7 years ago

YutakaNagayama 様

お世話になっております。 障害のレポートと障害箇所の検証、心から感謝いたします。 ありがとうございます。

Unity5.5でテクスチャ周りに変更が多そうな感じではありますので、頂いた検証を参考にさせて頂いた上で、追加の調査を行いバージョンアップをしたいと思っております。 お忙しい中お手間を頂いた上で、お待たせして申し訳ございませんが、少々お待ち頂けますようお願い申し上げます(目途としては遅くとも来週頭までには、現状のUnity5.5対応版をアップしたいと思っております)。 ※Unityが5.5のバージョンアップの時点でテクスチャインポート時の設定を(スクリプト自動変更時に)Defaultに書き換えるようにしたのには何らかの理由がありそうな印象もございますので、そのあたりも調査・類推しながら、最終的な更新実装の手法を考察したいと思っております。

重ねて有難うございます。

YutakaNagayama commented 7 years ago

Unity5.5への対応予定のご連絡有難うございます。

また追加情報ですが 別のデータを取り込んでみたところ再び長方形テクスチャが Type.Default で取り込まれてしまうケースが発生しました。(Importer.textureType = TextureImporterType.Advanced設定)

Importer.textureType = TextureImporterType.Sprite; にしたところすべて正常に取り込まれたことをご報告します。

MasamiYitsuse commented 7 years ago

YutakaNagayama様

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

本件に対処したバージョンをVer.1.4.8として、GitHubのdevelopブランチにプッシュいたしました。 具体的な変更点としては、

・Unity5.5.0以降については、TextureImporter.textureTypeをSpriteに(5.5未満で動作させた場合、従来プロジェクトへの影響を加味して従来どおりAdvancedに設定)。

・SS5のデータをインポートした際に、各SSCEで使用しているテクスチャの大きさを、インポートしたテクスチャからサイズを取得するのではなく・SSCEに記述されているデータ作成時のテクスチャサイズを用いるようにした(ただし、かなり昔のSSCEにはこのテクスチャサイズが記述してあるタグがないバージョンがあるので、SSCEから取得しきれない場合のみインポートしたテクスチャからサイズを取得する後方互換性対応が入っています)。 ※Unity5.5でインポータがテクスチャデータをアセットフォルダ中にコピーした直後に伸張などされてしまう動作が確認されたため、元テクスチャサイズの確定をSSCEデータ記述内容を確定情報とみなすようにしました。

・(これは本件とは直接関係はないですが)Unity5.5以降でRect構造体の初期化を、各メンバに対して行っている場合にCS0649(使用されていないため、初期値のままになっている)の警告が出てしまう(実際には値を設定したり・取得して使用している)ため、それを回避する初期化に変更

となります。

以上となります。 Unity5.5(及び先日リリースされた5.6)については、まだ挙動や仕様変更の詳細などを把握しきれていない部分もあり、まだ5.4以前の時とSS5PUが異なる動作をしてしまう部分が隠れているかもしれませんが、そういった場合、お手数とは存じますが本GitHub等にてレポート頂けますと非常に助かります。

お忙しい中お手数とは存じますが、何卒今後とも宜しくお願い申し上げます。

-------------- 以下返信 追加情報ありがとうございます。

当方でも検証してみたのですが、Advancedのオプションは実質上廃止されたようです。 その上で、Defaultに設定すると、様々な関係から、補間設定が効かなくなったり・MipMapなどを生成するオプションがONになってしまったり、補間設定は設定されているものの補間がかかった状態になってしまったり……などがありましたため、Unity5.5以降でインポートした場合はSpriteに設定するように致しました。 ※その際のUnityネイティブのSpriteへの各種設定値はデフォルトのままになっています(Pixel par Unit=100……など)。

以上となります。

MasamiYitsuse commented 7 years ago

また、これは余談となりますが、Unity5.6betaについてですが…… Ver.1.4.8については、Unity5.6betaで動作することは通り一遍確認はしましたが、

・シェーダのコンパイル時に「このシェーダで使用しているシェーダ定数行列よりも、有効な定数が提供されている」という警告が出る ※SS5PUのシェーダではなく、Unityのシェーダ群のみのはずです。

・プロジェクトを5.5から5.6に変換している最中にエラーが出ることがある。 ※これは、一度Libraryフォルダ(Assetsフォルダと同じ階層にあります)を消して、Unity5.6betaを再起動すると正常に変換できるようです。

という症状がでます。

YutakaNagayama commented 7 years ago

対応版ありがとうございます。 さっそく使わさせていただきます。 また何か気づいたことがありましたらご報告いたします。