現在unityで開発をしています。コルーチンを使用してphpと通信を行う処理を実装しているのですが下記のようにデータベースに値を送って返ってきた値をコンソールに表示するという処理を行いたいのですが変数に返り値が代入されるより先にコンソールに表示されてしまいます。
どこを変えればよいでしょうか?
c#
1コード 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6 7public class Sample : MonoBehaviour 8{ 9 public static Dictionary<string, string> dic = new Dictionary<string, string>(); 10 public static string ServerAddress = "http://localhost/sample/sample.php"; //selecttest.phpを指定 今回のアドレスはlocalhost 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 var obj = gameObject.AddComponent<DbProcess>(); 16 17 dic.Add("name", top.name); 18 19 obj.DbConnect(ServerAddress, dic); 20 Debug.Log(DbProcess.returnText); 21 } 22 23 24} 25
c#
1コード 2 3using System.Collections; 4using System.Collections.Generic; 5using System.Text; 6using UnityEngine; 7using UnityEngine.SceneManagement; 8using UnityEngine.UI; 9 10public class DbProcess : MonoBehaviour 11{ 12 public static string returnText = ""; 13 14 public void DbConnect(string ServerAddress, Dictionary<string, string> dic) 15 { 16 StartCoroutine(Access(ServerAddress, dic)); 17 } 18 19 private IEnumerator Access(string ServerAddress, Dictionary<string, string> dic) 20 { 21 StartCoroutine(Post(ServerAddress, dic)); 22 23 yield return 0; 24 } 25 26 private IEnumerator Post(string url, Dictionary<string, string> post) 27 { 28 WWWForm form = new WWWForm(); 29 foreach (KeyValuePair<string, string> post_arg in post) 30 { 31 form.AddField(post_arg.Key, post_arg.Value); 32 } 33 WWW www = new WWW(url, form); 34 35 yield return StartCoroutine(CheckTimeOut(www, 3f)); 36 37 if (www.error != null) 38 { 39 UnityEngine.Debug.Log("つながりません"); 40 //そもそも接続ができていないとき 41 } 42 else if (www.isDone) 43 { 44 returnText = www.text; 45 } 46 47 48 } 49 50 51 private IEnumerator CheckTimeOut(WWW www, float timeout) 52 { 53 float requestTime = Time.time; 54 55 while (!www.isDone) 56 { 57 if (Time.time - requestTime < timeout) 58 yield return null; 59 else 60 { 61 UnityEngine.Debug.Log("TimeOut"); //タイムアウト 62 //タイムアウト処理 63 // 64 // 65 break; 66 } 67 } 68 69 yield return null; 70 } 71 72} 73
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/21 09:44
2020/10/21 09:55
2020/10/21 12:05