//tips
//微調整
プレイヤーの非生成問題について調べていく。
Nowloadingphotonでactiveになった段階をログで吐き出すようにしているがBeforenowactive()のトリガーもとを確かめ、その周辺から辿れないか考える。
シーンのActiveを認識するのはCharaUIchange2のスタートメソッドである。
Roomには全員入れていて、シーンの起動も始まっている。シーンの全画面でpickUIとそれぞれのボタンは表示されている。
各キャラクターのボタンをクリックすることで、photonCountのBeforeCount()でプレイヤー参加者数lobbyPlayerMaxCount++を行いながら実行者のPhotonNetwork.LocalPlayer.UserIdを次のフェーズに伝達する。
lobbyPlayerMaxCountの加算ごとに呼ばれるonflagメソッドで、伝達されたIDは使用され、自分が加算メソッドを実行したのか他の誰かが加算メソッドを実行したのかをIDで判別する。
その後に、人間か人狼かのUIを表示させた後でchara番号をもとにプレイヤー生成を行うことになる。
このchara番号はボタン上にマウスが乗ったpointerenterのeventtriggerで取得されるもので、ここがうまく取得できず、chara=0となっている可能性がある。
もしくわshuffleposition()にて選定されるvに正しく値が入っておらず生成できないというケースも考えられる。
他には実行スピードが速くvに値が挿入される前に進んでしまうためエラーとなってしまうなどの可能性が考えられる。
複数回シーンの再生を行なったがなかなかエラーが起こらない。
代わりにmoveenemyスクリプトの下記箇所にif(rightfootcollider!= null)を設けてwaitモードになっていない一巡目ではrightfootcollider.enabled = false;をさせないようにした。
void Update()
{
if (photonView.IsMine)
{
if (state == EnemyState.Walk || state == EnemyState.Chase)
{
animator.SetBool("PunchAttackB", false);
if(rightfootcollider!= null)
{
rightfootcollider.enabled = false;
}
なかなかエラーが発生しないので任意のyoutubeを再生した状態で処理を実行した。
すると最後のシーンのみ一瞬プレイヤーが生成されない状態で表示され、すぐに元に戻った。
その際にはdeerではなくやはりfoxが生成されてしまっている。
またログには下記のような記載をもつけることができた。
PhotonAnimatorView: When using triggers, make sure this component is last in the stack.
If you still experience issues, implement triggers as a regular RPC
or in custom IPunObservable component instead
これはphotonが重いため表記されるものなのだろうか、検証を続ける。