現在unityで開発をしています。
コルーチンを使用してphpと通信を行う処理を実装しているのですがそれぞれのクラスで実装するとうまくいくのですが下記のようにインスタンス化して使用するとエラーが起きます。
原因がわからず困っています。インスタンス化すると使えないのでしょうか?
c#
1 2コード 3 4get.cs 5 6using System.Collections; 7using System.Collections.Generic; 8using UnityEngine; 9 10public class get : MonoBehaviour 11{ 12 // Start is called before the first frame update 13 void Start() 14 { 15 var ins = new common(); 16 ins.getTalkCatalog(); 17 } 18 19 // Update is called once per frame 20 void Update() 21 { 22 23 } 24 25} 26
c#
1コード 2 3common.cs 4 5using System.Collections; 6using System.Collections.Generic; 7using UnityEngine; 8 9public class common : MonoBehaviour 10{ 11 private string SeverAddress = "http://localhost/sample.php"; 12 13 // Start is called before the first frame update 14 void Start() 15 { 16 17 } 18 19 // Update is called once per frame 20 void Update() 21 { 22 23 } 24 25 public void getTalkCatalog() 26 { 27 StartCoroutine("Sample"); ←ここでエラーが起きる 28 } 29 30 private IEnumerator Sample() 31 { 32 Dictionary<string, string> dic = new Dictionary<string, string>(); 33 34 StartCoroutine(Post(SeverAddress, dic)); 35 36 yield return 0; 37 } 38 39 private IEnumerator Post(string url, Dictionary<string, string> post) 40 { 41 WWWForm form = new WWWForm(); 42 43 foreach (KeyValuePair<string, string> post_arg in post) 44 { 45 form.AddField(post_arg.Key, post_arg.Value); 46 } 47 48 WWW www = new WWW(url, form); 49 50 yield return StartCoroutine(CheckTimeOut(www, 3f)); 51 52 if (www.error != null) 53 { 54 Debug.Log("つながらないよー"); 55 56 } 57 else if (www.isDone) 58 { 59 Debug.Log("つながったよー"); 60 61 Debug.Log(www.text); 62 63 } 64 } 65 66 private IEnumerator CheckTimeOut(WWW www, float timeout) 67 { 68 float requestTime = Time.time; 69 70 while (!www.isDone) 71 { 72 if (Time.time - requestTime < timeout) 73 { 74 yield return null; 75 } 76 else 77 { 78 Debug.Log("TimeOut"); 79 80 break; 81 } 82 } 83 84 yield return null; 85 } 86} 87
回答1件
あなたの回答
tips
プレビュー