ランキング実装中なのですが、ランキング用にinputFieldにusernameという変数を使用して保管しています。
それを通信して、ランキングのテーブルに追加しようとしているのですが、外部のスクリプトの変数の参照に失敗しているのか何も入ってないというエラーが出ます。
この方法ではできていないのでしょうか。
どのシーンの話なのかが記述されていませんので憶測ですが、これは「gameClear」シーンでのエラーでしょうか?
だとしたら、Rankingmanage.cs
の24行目に記されている
script1 = gameObject.GetComponent<namehokan>();
の部分で問題が起こっていると思われます。
gameObject.GetComponent<namehokan>();\
は「このスクリプト(今回で言うRankingmanage)をアタッチしているオブジェクトにアタッチされている『namehokan』スクリプトを取得する」という意味です。
シーン内を確認してみたところ、Rankingmanage.cs
がアタッチされているオブジェクト(Rankingmanageオブジェクト)にnamehokan.cs
はアタッチされていませんでした。
もしシーン違いの話でしたら、該当シーンも含め、もう少し詳しく状況を教えて下さい。
ランキング表示はgameClearシーンの話でした、申し訳ないです。
staticを使用する参照方法で参照することができました!
しかし、今度もまた別のところで参照できていないエラーが出てきてしまいました。
何か抜けている部分などあるのでしょうか。
つまりここでの問題としては、
RankingDataModel内のsStrJsonにwebRequest.downloadHandler.textの値がきちんと入っていないということか
Rankingmanage内のSetJsonFromWww内の StartCoroutine(SetMessage(sTgtURL, name, time, CallbackApiSuccess, CallbackWwwFailed));
の引数が間違っているという認識であっていますでしょうか
そうですね。
webRequest.downloadHandler.textの値がきちんと入っていないということです。
引数が間違っていたら、その手前でエラーが起こりそうですね…。
エラー文の上にあるDebug.Log
で表示されている「Success:<br />
」の<br />
は正しい結果なのでしょうか?
もし間違った値であるのであれば、php側にも問題があるかもしれません。
PHP側の方で構文エラーが発生していたようでそれを見逃していました。
それを解決したところ、InvalidCastException: Specified cast is not valid.
が出てしまいました。3枚目の色をつけている部分で(int)timeとしているのがいけないのでしょうか。
(int)をつけないとfloa型からstring型に変換はできないというエラーが出るため記述しているのですが、、、
それとも関係なく別の部分なのでしょうか。
データベースのtimeの型がfloatであるならば、float型のままデータベースに送った方がいいと思いますので、
こちらを参考に「floatをstringに変換」してみてください!
https://www.sejuku.net/blog/44977
修正して変換してみても
InvalidCastException: Specified cast is not valid.
のエラーは出続けてしまうのですが、float型の場合PHP側でも違った記述が必要なのでしょうか
float型の値をDBに送ったとしても、それが整数(例えば、2.0等)の場合、DB側で整数値として処理される場合があります。一度
if (jsonOne.Contains("Time"))
{
tmp.Time = (float)(double)jsonOne["Time"];
}
if (jsonOne.Contains("Time"))
{
Debug.Log(jsonOne["Time"].GetType().FullName);
tmp.Time = (float)(double)jsonOne["Time"];
}
もしint型が入っていたら
①int型の場合とfloat型の場合で分けて処理する
②まずは型を統一した型に変更してから処理する
の2パターンで対応してください。
デバッグログを見たところint64となっており、ずっとfloat型で処理しようとしていたのでエラーが出ていたみたいです。
②のパターンですべてlong型で統一して処理することにしました。
その結果無事にランキング機能の実装ができました!
何度も質問に答えていただきありがとうございました!