Open nunnnu opened 9 years ago
お世話になっております。
起こっている事象から類推した対処法となりますが、まず下記の点を試してみてくださいますようお願いいたします。
以上となります。 まず、上記2点を行ってみて頂けますようお願いいたします。 その上で、まだ状況が改善しないようであれば、アニメーションを再生している部分のスクリプトと・シーンへの設置方法(Unity上で直接配置しているのか・スクリプトから設置しているのか)などの情報をいただけますと助かります。
お手数をおかけいたしますが、何卒今後とも宜しくお願いいたします。
また、追加情報となりますが、上記URLの記事を参考とせず、自力でScript_SpriteStudio_PartsRootを取得してアニメーション制御する方法については、
・本GitHub内Wikiページ内の「スクリプトリファレンス」 https://github.com/SpriteStudio/SS5PlayerForUnity/wiki/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9 内にあります「制御用GameObject等からのScript_SpriteStudio_PartsRootの取得」などもご参考いただけるのではないかと思われます。
何卒よろしくお願いいたします。
詳しい解説ありがとうございます。 上記2点 やってみましたが結果は変わらずでした。 最初のスクリプトは、最初に貼った講座のスクリプトそのままで、 現在は Update()にて 20ループ目で一度だけ spriteStudioRoot.AnimationPlay を実行させている状態です。 シーンへの設置は プロジェクトからヒエラルキーへ直接 View3D→○○_Control で行っています。
お世話になっております。
情報ありがとうございます。 例えば、上記URLのサンプルの形(Start関数の中でアニメーションを発行)ではなく、「~_Control」のGameObjectにつけるC#スクリプトの内容を下記の形にしてみるとどのような挙動になりますでしょうか? ※本リストを記載するスクリプトは、「スクリプトのボディ名と同名のクラス名」かつ「MonoBehaviour」クラスを継承したクラスの中に記載されるものとします。
private Script_SpriteStudio_PartsRoot ScriptRoot = null;
private int animationNoPrevious = -1;
private int animationNo = -1;
public int AnimationNo
{
get
{
return(animationNo);
}
set
{
animationNo = value;
}
}
void start()
{
}
void Update()
{
if(null == ScriptRoot)
{
int Count = transform.childCount;
Transform InstanceTransformChild = null;
for(int i=0; i<Count; i++)
{
InstanceTransformChild = transform.GetChild(i);
ScriptRoot = InstanceTransformChild.gameObject.GetComponent<Script_SpriteStudio_PartsRoot>();
if(null != ScriptRoot)
{
break;
}
}
}
if((null != ScriptRoot) && (animationNo != animationNoPrevious))
{
ScriptRoot.AnimationPlay(animationNo);
animationNoPrevious = animationNo;
}
}
このコメントにいきなりザラ書きしたため、コンパイルエラーが出るかもしれませんが、その点申し訳ございません(エラーの内容は恐らく単純な変数名などのタイプミスによるものだと思われます)。
その上で、上記のAnimationNoプロパティを他のスクリプト等から書き換えることによって、インスタンス化したアニメーションが安定した(と思われる)段階で、「~_Control」の子についているアニメーションの再生が開始されます。 ※また初回再生開始以降でも、AnimationNoプロパティに他の値を与えると、アニメーションが切り替わるはずです。
もし、この方法でも状況が改善しない場合、もしご支障がなければ、ご使用のUnityのバージョン(Win/Mac.の動作OS情報と、Unity自体のバージョン情報をいただけますと非常に助かります)と一緒に本症状が起こるUnityのプロジェクト(本来のプロジェクトそのものでなく、症状が起こるデータとスクリプトを含んだものであれば問題ありません)を、SpriteStudioのサポート宛てに、「本GitHubのIssue-126のサンプルデータ」である旨をお書き添えて頂き、メールに添付ないし何らかの方法でデータをご送付の上・ご質問頂ければ、より具体的に動作状態を検証し・解消方法のご案内やスクリプトを直接書き換えて提供できるかと思われます。 ※その際のプロジェクト内容の守秘などについては厳格に扱い、ご質問が解消された時点で当方の環境からその一切を削除することをお約束いたしますので、ご安心下さい。 ※プロジェクトをご送付いただく際には、「Unityのプロジェクトが格納されているフォルダ内のAssetsのフォルダをZIPなどでフォルダごと圧縮していただく」か「Unity上からプロジェクトの内容を全て選択して、パッケージにエクスポートしていただく」ことをお願いいたします。また、その際に、症状が起こるサンプルのシーンをプロジェクト内に入れておいて頂けますと、非常に助かります。 ※また、お手数でなければ、インポートした元のSS5のデータも添えて頂けますと、SS5PU自体のバグなどであった場合の検証が楽になるため、非常に助かります。
お手数をおかけして大変申し訳ございませんが、何卒ご検証とご検討の程よろしくお願い申し上げます。
また、Ver.1.2.xでは、AnimationPlayなどの関数の引数などが、(Ver.1.0.xやVer.1.1.xなどの以前のバージョンと比較して)大きく追加等が行われております(上記サンプルリストでは、引数の省略記載を行っておりますことにご注意ください)。 そのため、前記Wiki内のスクリプトリファレンス(特に「Script_SpriteStudio_PartRoot」と冒頭の4項目の諸注意事項について)をご一読頂けますと幸いです。
上記スクリプトで動きました! ありがとうございます!! 大変お手数おかけ致しました。
お世話になっております。 ご提案したスクリプトで動作したとのことで、心から安堵しております。 少々扱いに癖があるプレーヤとは思いますが、今後とも皆様からのご要望やご質問などを反映して、より使いやすいプレーヤになるよう努力していきますので、何卒よろしくお願い致します。
検索しやすいタイトルに変更いたしました。
http://befool.co.jp/blog/ayumegu/unity-study-SpriteStudio/ こちらのサイトを参考に表示させてみたのですが アニメーションは再生されましたが、 spriteStudioRoot.AnimationPlay の行で 【NullReferenceException: Object reference not set to an instance of an object ○○○.Start () (at Assets/Resources/Script/mirai.cs:18)】 とのエラーがでてしまい、アニメーションを変更できずにいます。 対処法ございますでしょうか