SpriteStudio / SS5PlayerForUnity

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

v1.1.18 Viewを複数配置した場合に、正しく表示されない場合があります #101

Open M-Kanou opened 9 years ago

M-Kanou commented 9 years ago

SS5Player 1.1.18 (Feb 03, 2015) Unity 4.6.1f1

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

SS5Player for Unityをインポートし、含まれているサンプルを使用して 挙動を確かめさせていただいているのですが、 Viewを複数配置しての挙動が変になりました。

まずやりたい事としましては、SS内での描画をカメラを分けて、 カメラのDepthで表示優先を分けまして

①SSで前面表示するもの ②SSで背面表示するもの

という風にしたかったのですが、 こちらのIssue:https://github.com/SpriteStudio/SS5PlayerForUnity/issues/64 の最後の方を参考にし、それぞれDepthを分けた①②のCameraを用意し、その子供に必ずViewを用意してやってみました。

default

いずれもViewにぶら下げているオブジェクトは

・character_template_2head ・character_template_3head

の2つ(プレハブを使用)なのですが、シーン再生前のGameビューでは正しく表示されるのですが シーンを再生した際にどちらか片方の座標に寄ってしまうという現象が発生しました。

(実行前Gameビュー) game (実行後Gameビュー) game

そもそもViewを複数配置しても大丈夫な仕様なのでしょうか? その辺りを詳しく教えていただけると助かります。

M-Kanou commented 9 years ago

※Add Labelボタンがなく、ラベルの追加のやり方が分かりませんでした、申し訳ございません。

MasamiYitsuse commented 9 years ago

お世話になっております。 使用法と想定仕様については、 M-Kanou様のご想定通りで問題ありません。 (「Viewを複数配置する」ことが可能な仕様です)

そのため、本件はSS5P for Unityのバグの可能性が高いと思われますので、SS5P for Unityの内部処理に問題がないかを調査いたします。 お忙しい中大変申し訳ございませんが、少々、原因調査と改修(及び解決策の検証)のお時間を頂けますようお願い申し上げます。

追伸: これは念のためですが、お手元のプロジェクトで https://github.com/SpriteStudio/SS5PlayerForUnity/wiki#Caution-Script-Order (GitHub上のSS5P for Unityの解説Wiki内の「Unity上で必要な設定について 」の項目です)の内容に即した形でスクリプトの動作順序の設定が正常に行われているかをご確認下さいますと、非常に助かります。

M-Kanou commented 9 years ago

Yitsuse 様 早急にご回答くださり大変ありがとうございます。

原因を調査いただける旨、了解いたしました。 お手数ですが何卒よろしくお願いいたします。

ScriptExecutionOrderについても、Wikiの仕様説明の通りに設定した上で本現象を確認しております。 https://github.com/SpriteStudio/SS5PlayerForUnity/wiki#Caution-Script-Order

MasamiYitsuse commented 9 years ago

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

当方でもUnity 4.6.2にて現象を確認いたしました。 その上で、確認できた再現規則性について下記致します。

A. 複数のCamera2Dを置いた場合に状況が発生する。

B. 複数のCamera2Dを設置した後一度(Cameda2Dの位置を操作せずに)「シーンをセーブ」して、一度Unityを終了させて、Unityを再起動した後、カメラを動かすと、この現象は起こらない。

B-2. 複数のCamera2Dを設置した直後にCamera2Dを移動すると、プレビュー内で中の画像が「Positionの符号が逆転した形」で動き、プレイモードを実行すると「逆転した符号」の位置に正常に描画しはじめるので「丁度原点を中心に反対側の位置に描画される」。 B-3. 「B-2」が起こった後に(プレイモードを停止してから)、Camera2Dの位置指定の符号を反転(+なら-に・-なら+に)して、位置を再設定してやるとプレビューも正常な描画になる。

C. Camera2Dを直接動かさず、Camera2Dの下にある「View」を動かすと、この現象は起こらない。

D. スクリプトから、直接この状況を作った場合(「Camera2D+View+表示オブジェクト群」を、1つのプレハブにして、プログラムから位置をずらしてプレハブを2個Instantiateを行って、どちらかCamera2Dを動かすという処理を行った場合)にも、Camera2Dのtransform.localPositionを変化させても、同様の状況が発生する(スクリプトから生成した場合、Camera2Dの位置のx,y,zを符号反転した形で生成すると、想定通りのレイアウトで表示される)。

……ということが判明致しました。

現在、なぜ設置初回のみこの現象が起こるのか原因を究明中ですが、少々難航しそうです。 そのため、もし作業やプロジェクトの仕様に支障等ないようでしたら、

  1. 複数のCamera2Dを設置したら、(Camera2Dを移動させずに)シーンをセーブして、Unityを一度終了させ、再度起動してから、Camera2Dを移動する。
  2. 複数のCamera2Dを設置したら、移動するCamera2Dを一度適当な位置に動かして・プレイモード(シーンの再生ボタンを押す)を動かして&とめた後に、動かすべきCamera2Dを想定位置に移動する。
  3. Camera2Dではなく、Viewを移動する。

……のいずれかの形で回避いただくことは可能でしょうか?

また、上記の方法でも障害が再現してしまった場合などは、ご一報頂けますと非常に助かります。 大変申し訳ございませんが、ご検討とご検証の程頂けますようお願い申し上げます。

M-Kanou commented 9 years ago

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

本現象の詳細な再現の規則性について調査いただき、ありがとうございます。 こちらもUnityのバージョンを4.6.2にして、ご説明にある手順で再現を試してみます。

現状は複数のCamera2D+Viewで、SSの描画を行う予定はないのですが、 最終的にNGUIによるメニュー画面等の描画と、SSの描画(主にプレイヤー等)を共存させる予定です。

その際に、以下のようにCamera2DでDepthを分けたものを複数使用すればよいのではないかと思いまして、 描画するものをCullingMaskで分けるつもりです。

  1. NGUIのメニュー画面よりも背面に描画するSS用のCamera2D(Depth:-10, Layer=UI_SS_Behind)
  2. NGUI用のCamera2D(Depth:0, Layer=UI_NGUI)
  3. NGUIのメニュー画面よりも前面に描画するSS用のCamera2D(Depth:10, Layer=UI_SS_Front)

現在は、NGUIのUIよりも前面にSSを描画する予定はありませんので、 特に問題はありませんので現状でも作業が出来ます。

ただ今後、上記のような形にしたいというケースがあるかと思いまして、 もしそうなった場合は頂いた回避方法で対応させていただこうと思います。

DKAlpha commented 9 years ago

現在原因がわかっておりません、回避策にて対応とお願いいたします。