0 支持
675 閲覧
(130 ポイント) Q&A

こんにちは、はじめて質問させていただきます。

【使用しているバージョン】
>SS6Player for Unity v1.1.21
>Unity:2019.4.13f1

【動作環境】
>windows 10 Home

【症状】
OPTPIX Help Centerで紹介されている「Unityでキャラクターを動かす方法」を試してみたのですが、想定どおりの挙動なりません。

手順にそって実行した結果、アニメーションの表示はできているのですが左右の方向キーを押すと91行目、100行目あたりで以下のエラーが出てきました。
91行目あたり:m_goCharPos.transform.localScale = m_vecCharacterScale; // 向き設定
100行目あたり:m_goCharPos.transform.localScale = m_vecCharacterScale; // 向き設定

NullReferenceException: Object reference not set to an instance of an object
CharacterControl.Update () (at Assets/Sample/Script/CharacterControl.cs:91)

また、本来ならspaceキーを押したらWaitアニメーションが始まると思われるのですが実際は攻撃アニメーションのループが実行されてしまいます。
おそらく172行目あたりのAnimationStart()で定義されているscriptRootがnullのためだと思われます。
scriptRoot = Script_SpriteStudio6_Root.Parts.RootGet(m_goCharacter);
(引数に与えられているm_goCharacterはnullではありませんでした。)

【再現手順】
https://www.webtech.co.jp/help/ja/spritestudio/guide/output6/unity_chara_action/#script

お手数をお掛けしますが、解決方法をご存知の方はご回答の程よろしくお願いいたします。

他に必要な情報等ありましたら遠慮なくおっしゃってください。

このページをシェアする

回答 1

0 支持
(5.0k ポイント)

ちびスタらぼ 様

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

祭日をはさんでしまったため、返信が遅れ申し訳ありません。

サポートセンターの担当が現在多忙にて、私(SS6Player for Unity担当)の方で代理で返信させていただきます。


ご指摘の状況は、

https://www.webtech.co.jp/help/ja/spritestudio/guide/output6/unity_chara_action/

(同じ)ページでの「キャラクター制御の準備」の6番で、スクリプトにドロップするプレハブが「character_template_3head_Control」だと起こってしまう症状になります。

「character_template_3head」のプレハブの方をドロップしていただけますようお願いいたします。

※Assetsのヒエラルキーからの選択の場合、データをインポートしたフォルダの「PrefabAnimation」フォルダの中にあるプレハブになります。

※この2つのプレハブの違いについては、後述いたします。

ただ、オブジェクト一覧から選択する場合に、間違いやすいとも思いますので、後日サンプルのスクリプトを「character_template_3head」「character_template_3head_Control」のどちらでも再生できるように修正するかもしれません。

ご指摘ありがとうございます。


余談:

この「PrefabAnimation/character_template_3head」と「character_template_3head_Control」の違いは、下記のURL(SS6Player for UnityのGitHub内のマニュアルのページです)にあります機能の違いとなります。

https://github.com/SpriteStudio/SS6PlayerForUnity/wiki/%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%86%8D%E7%94%9F#ControlPrefab

この違い(Instantiateが2段階で行われる)から、サンプルに制御用プレハブを指定してしまいますと、シーンに実体化した直後ではアニメーション本体側のプレハブが展開されていないために、ご指摘の通りscriptRootがnullになってしまうフレームが1フレームだけ存在します。

この仕様については、Unity2018以前のプレハブが入れ子にできない頃に同種のことを実現するための対処だったりしますので、今後でSS6Player for Unityの最低対応バージョンがUnity2018.4以降になった時に修正するかもしれません(後方互換を考慮しなくてはならないかもしれないので、現状不確定ではありますが……)。


色々とお手数をおかけしてしまい、申し訳ありませんが、何卒今後ともよろしくお願いいたします。

...