質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

unityでphpからの情報を受け取りたい

zenobread
zenobread

総合スコア44

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0リアクション

1クリップ

4718閲覧

投稿2018/11/29 14:33

編集2018/12/04 11:00

今回、Unity内でInputFieldからidを取得し、そのidをlocalhostserverに送信します。
そののち既にjsonファイルをphpファイル内で読み込んでおいて、送られてきたidを参照してデータをUnity側に返す、という処理を行おうとしています。
ですが、phpからデータが帰ってこず、またUnity側ではエラーメッセージが出てこないので困っています。
mysqlを使わずにデータの送受信を行おうとしています。

使用versionは
xampp 3.2.2.0
Unity 2017.1f
localhostserver ポート番号80,443
またこのサイトを参考にしました。
https://qiita.com/kemmimilk/items/9da751e88e0b6aefaa62
DBを使わないのでそこを自分なりに変えています

ちなみにphpだけで処理を行うと(idをunityから受け取っていないので)
Notice:Undefined index: id in C:\xampp\htdocs\php\qiita.php on line 6
0
01

と出てきます。

jsondata.json

{"res": {"blogData":[ { "id":"0001", "title":"サンプル01", "day":[ { "year":"2015", "month":"03", "_day":"31" } ], "author":"fantmsite", "tag":[ "ブログ" ], "report":"ブログ内容サンプル01" }, { "id":"0002", "title":"サンプル02", "day":[ { "year":"2015", "month":"04", "_day":"01" } ], "author":"fantmsite", "tag":[ "ブログ" ], "report":"ブログ内容サンプル02" } ]} }

qiita.php

<?php $url = "http://localhost/php/jsondata.json"; $json = file_get_contents($url); $json = mb_convert_encoding($json,'UTF8','ASCII,JIS,UTF=8,EUC-JP,SJIS-WIN'); $arr = json_decode($json,true); $id = $_POST["id"]; $id_using = (int) $id; if($arr === NULL){ return; }else{ $json_count = count($arr["res"]["blogData"]); $bc_id = array(); $bc_title = array(); $bc_write_day_year = array(); $bc_write_day_month = array(); $bc_write_day_day = array(); $bc_author = array(); $bc_tag = array(); $bc_repport = array(); for($i=$json_count-1;$i>=0;$i--){ $bc_id[] = $arr["res"]["blogData"][$i]["id"]; $bc_title[] = $arr["res"]["blogData"][$i]["title"]; $bc_write_day_year[] = $arr["res"]["blogData"][$i]["day"][0]["year"]; $bc_write_day_month[] = $arr["res"]["blogData"][$i]["day"][0]["month"]; $bc_write_day_day[] = $arr["res"]["blogData"][$i]["day"][0]["_day"]; $bc_author[] = $arr["res"]["blogData"][$i]["author"]; $bc_tag[] = $arr["res"]["blogData"][$i]["tag"]; $bc_repport = $arr["res"]["blogData"][$i]["report"]; } $result = $bc_write_day_day[$id_using]; echo $id_using; echo "<br/>"; echo $result; } ?>

Catch.cs

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Catch : MonoBehaviour { public Text ResultText_; public Text InputText_; public string ServerAddress = "http://localhost/php/qiita.php"; // Use this for initialization public void SendSignal_Button_Push() { StartCoroutine("Access"); } private IEnumerator Access() { Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("id", InputText_.GetComponent<Text>().text); StartCoroutine(Post(ServerAddress, dic)); yield return 0; } private IEnumerator Post(string url, Dictionary<string,string> post) { WWWForm form = new WWWForm(); foreach (KeyValuePair<string, string> post_arg in post) { form.AddField(post_arg.Key, post_arg.Value); } WWW www = new WWW(url, form); yield return StartCoroutine(CheckTimeOut(www, 3f)); if (www.error != null) { Debug.Log("HttpPost NG:" + www.error); }else if(www.isDone){ ResultText_.GetComponent<Text>().text = www.text; } } private IEnumerator CheckTimeOut(WWW www,float timeout) { float resultTime = Time.time; while (!www.isDone) { if (Time.time - resultTime < timeout) yield return null; else { Debug.Log("TimeOut"); break; } } yield return null; } void Start () { } // Update is called once per frame void Update () { } }

追記1
投稿時点からUnityを最新版にアップデートしました。
Unity側のConsoleWindowにはDebugLogが全く表示されません。
よってDebugLog(www.text);でエラーの確認が出来ません。
サーバー側のアクセスログには全く何も表示されず
エラーログには
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
[Mon Dec 03 11:30:06.549514 2018] [mpm_winnt:notice] [pid 46064:tid 664] AH00354: Child: Starting 150 worker threads.
[Mon Dec 03 22:27:41.598903 2018] [ssl:warn] [pid 42188:tid 680] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Mon Dec 03 22:27:41.815474 2018] [core:warn] [pid 42188:tid 680] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Mon Dec 03 22:27:41.838263 2018] [ssl:warn] [pid 42188:tid 680] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
[Mon Dec 03 22:27:42.763834 2018] [mpm_winnt:notice] [pid 42188:tid 680] AH00455: Apache/2.4.37 (Win32) OpenSSL/1.1.1 PHP/7.2.12 configured -- resuming normal operations
[Mon Dec 03 22:27:42.763834 2018] [mpm_winnt:notice] [pid 42188:tid 680] AH00456: Apache Lounge VC15 Server built: Oct 18 2018 17:16:04
[Mon Dec 03 22:27:42.763834 2018] [core:notice] [pid 42188:tid 680] AH00094: Command line: 'c:\xampp\apache\bin\httpd.exe -d C:/xampp/apache'
[Mon Dec 03 22:27:42.797714 2018] [mpm_winnt:notice] [pid 42188:tid 680] AH00418: Parent: Created child process 32152
[Mon Dec 03 22:27:43.798991 2018] [ssl:warn] [pid 32152:tid 736] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Mon Dec 03 22:27:43.914713 2018] [ssl:warn] [pid 32152:tid 736] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
[Mon Dec 03 22:27:44.031367 2018] [mpm_winnt:notice] [pid 32152:tid 736] AH00354: Child: Starting 150 worker threads.
と表示されました。

追記2
Unity側のButtonに異常があるようです。Buttonにスクリプトを付けようとしても選択できません。
具体的にはButtonScriptComponent→NoFunction→MonoBehavior→stringname
と選択することしかできません。
以下はその画像です。(一度 Unity2dで作り治したためcsファイル名が変わっていますが、内容自体は全く一緒です)
イメージ説明

追記3
OnClick部分に間違ってCSファイルそのものを選択していたことが原因でした。
正しくはButtonObjectを選択すべきでした。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

sakura_hana

2018/11/30 01:11

「phpからデータが帰ってこず」というのはタイムアウトするということですか? 違う場合はUnity側Postメソッドの「if (www.error != null)」の上に「Debug.Log(www.text);」と追記して何が返って来ているか見てみてください。
kunai

2018/11/30 01:36

PHP側にアクセスはできているのでしょうか。PHPが置かれているサーバのアクセスログを確認し、アクセスが来ている事を確認してください。
zenobread

2018/12/03 13:46

すいません、遅れました。DebugLogはConsoleWindowに全く表示されず、PHP側のアクセスログにもログがありませんでした。サーバーのエラーログに書かれていた内容は質問部分に追記しておきました。
sakura_hana

2018/12/04 01:38

となると疑いとして「そもそもこのコードが実行されているか」という点が上がります。SendSignal_Button_Push、Access、Post、CheckTimeOutの各先頭部にDebug.Logを入れてみて、到達しているか確認してみてください。
zenobread

2018/12/04 04:09

おっしゃられていることを試してみましたが、やはりConsoleには何も表示されませんでした。試しにcsファイル内でエラーを吐いた状態で実行してみたところ、Cosoleログにはそのエラーがきちんと書かれていました。
kunai

2018/12/04 04:20

そもそもこのコードが実行されていない可能性があるので、このコードが呼ばれるところが大事になるのですが。私はUnityに明るくないのですが、どうもPostというMethodをAccessから呼ばれているようですが、一般的にPostというMethod名はプログラム上の予約語(というか、同名のMethodがシステム内に存在する)場合が多い気がするのですが、Postのmethodは正しく呼ばれているのでしょうか。
sakura_hana

2018/12/04 05:48

Consoleには何も表示されないということは、やはりメソッドが呼ばれていないと思います。SendSignal_Button_Pushは恐らくボタンが押されて呼ばれるメソッドだと思いますが、ボタンの設定は正しく出来ていますでしょうか。(csファイル内にエラーがある場合、それがチェックされるのは「csファイルをUnityがインポートする時」なので、「シーン上でそのファイルが使われているか・呼び出されているか」のチェックにはなりません)/kunaiさん>現行ソースではPostは予約語には当たらないので、その点は問題無いかと思います。
zenobread

2018/12/04 10:45

sakuraさんありがとうございます。Unityのbuttonのスクリプトがくっついているか確認したところやはりここに問題がありそうです。onclickにスクリプトをくっつけようとしても、MonoBehavior->stringnameとでて、Catch.cs内の関数を選択することが出来ませんでした。
zenobread

2018/12/04 11:01

自己解決することが出来ました!追記3部分に書いたようにButtonInspectorで選択すべきものが間違っていました。お二方ありがとうございました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。