0 支持
2.3k 閲覧
(200 ポイント) Q&A

Unityで使用する際にインスタンスを変更しようとした場合に発生する下記問題について解決方法をご教授ください。

SpriteStudio6で作成したアニメーションプロジェクトをUnityにインポートし、アニメーション内のインスタンスを

InstanceChange()によって変更しようとしています。

この際、変更先のパターンが10種類ほどあり、条件に応じて設定するインスタンスを変更しております。

インスタンスはPrefabを配列で持っており、再生時にInstanceChange()で設定しております。

この設定を行った場合、正しく変更後のアニメーションインスタンスが再生される場合とまったく表示されない場合があります。

InstanceChange()の返り値はtrueとなっており、ヒエラルキー上でも該当アニメーションが設定されているように見えますが、

失敗パターンでは親アニメーションのgameObjectに存在するMesh Rendererのmaterialsのsizeが0になっており、

これが原因だと思われます。

また、InstanceChangeに失敗するアニメーション単体で再生することに問題はありません。

こちら、解決手段につきましてご教授のほどよろしくお願いいたします。

  • SpriteStudioバージョン: 6.3.2.1522
  • Unityバージョン: 2019.1.1f1
このページをシェアする

回答 1

0 支持
(5.0k ポイント)

gg三浦様

お世話になっております。SS6Player for Unity担当です。

ご質問いただいた症状については初見ですので、検証に入ろうと思います。

まずは状況の再現からとなりますため、少々お時間をいただければと思います。

また、当方で状況の再現ができない場合にUnityのプロジェクト(該当部分のみ)などか再現性に類する情報のご提供をお願いする場合がございます。その場合には大変お手数とは存じますが、ご検討いただけますと非常に助かります。

※また、再現性や失敗するアニメーションの共通性にお気づきの点がありましたら、情報をいただけますと非常に助かります。


また、現状のお手元で、下記の点のチェックをお願いできますでしょうか?

  • InstanceChangeコマンドの終了後にAnimationChangeInstance関数で新規インスタンスのアニメーション設定を行っているか?(新規インスタンスのアニメーション指定はAnimationPlay関数を直接叩かないでください)
    インスタンスの変更タイミングは、「インスタンス側の各種コールバック(インスタンス側の再生終了コールバックも含みます。親の再生終了コールバックは大丈夫です)」や「ユーザーデータ検知コールバック」などのタイミングで行わないでください。(特にユーザー検知データコールバックはアニメーションの更新中に呼ばれるため、コールバック処理中で処理状態を変更すると動作が不安定になります)
    コールバック処理中には「次に再生するインスタンス(&アニメーション)のキャッシュ」に留めて・次のUpdateなどの平易なタイミングで実際の変更を行ってください。


以上となります。

お忙しい中、お手間やご不便をおかけして申し訳ございません。

何卒今後ともよろしくお願いいたします。

(200 ポイント)

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

2点、回答いたします。

この場合の「異なるssae」は、「同じsspjの中にあるssae」でしょうか?

はい、同じsspjの中にあるssaeです。

あるsspjをインポートし、その結果同一のPrefabAnimationフォルダ下に各ssaeのprefabが生成されると思いますが、それらを使用して切り替えております。

sspjをSS6PUでインポートする際に、インポート設定の[Option: Basic]-[No-Create unreferenced Materials]の設定はいずれになっておりますでしょうか?

デフォルト設定をそのまま使用しておりますが、確認したところ「None(Create all)」でした。

以上、よろしくお願いいたします。

(5.0k ポイント)
gg三浦様

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

お忙しい中、1と2の状況をいただけましたこと、心から感謝いたします。

何かしら状況の進展など発生しましたら、こちらにて報告させていただきたく思います。
(5.0k ポイント)
gg三浦様

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

間が開いてしまい申し訳ありません。

当方で状況を再現してみようとテストを行ってみたのですが、状況が再現できずにおります。

そのため、大変お手数とは存じますが、該当するSpriteStudio6のデータをご提供いただけると非常に助かるのですが、ご検討いただけますでしょうか?

また、もしご提供をご快諾いただける場合、こちらのコミュニティに登録されているメールアドレスに弊社サポートから手順などのメールを送ってもよろしいでしょうか?

お忙しい中お手数とは存じますが、何卒ご検討くださいますようお願いいたします。
(5.0k ポイント)
編集

gg三浦様

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

本件そのものの障害は再現できていないのですが、(本件調査中に)ご指摘の症状に発展する可能性がある障害を修正したバージョンをSS6Player for UnityのGitHubにの

developもしくはsampledevelop

のブランチにコミットいたしました。

https://github.com/SpriteStudio/SS6PlayerForUnity

※修正後バージョンは「1.1.24」になります。

状況としては、インスタンスとエフェクトを併用したアニメーションを使用しているアニメーションに対してInstanceChange関数を使用した場合に、データ構成によってはメモリリークを起こし・動作が不安定になる場合がある障害の解消……になります。

もしお手元で更新可能な場合、本変更で同時に本件も修正されていると良いのですが……。

お忙しい中お手数をおかけして申し訳ございませんが、今後とも何卒よろしくお願いいたします。

(200 ポイント)
お世話になっております。

ご調査いただきありがとうございます。

一旦Dollと同じ状態(すべて同じアニメーションを経由する)形で対応できたこと、時間的余裕がないことから今回はこちらの対応で進めようと思っております。

ただ、今後同様に作成する場合はできれば別々のアニメーションを切り替える形(今回問題が発生している形)で運用したいと考えております。

そのため上記データの提供、修正バージョンでの確認を後ほどさせていただきたいと考えております。

時間が空くことになってしまい申し訳ありませんが、落ち着き次第対応させていただきたいと考えておりますので、

よろしくお願いいたします。
...