UnityとRailsの連携方法、WWWクラスでかんたんに実現
やまろうさんのブログで紹介されている「パックマン風ゲーム」の技術の詳細が知りたいです。
私は現在、Unityでゲームを作ってアップストアにリリースしているのですが、ログインや点数の管理機能をRuby On Railsで実装できないか、検討しています。
Railsはまだ、勉強し始めた段階でScaffoldで簡単なウェブアプリが作れる程度です。データベースはsqlite3がインストールされてます。Unity, Rails共々、実装方法がわかりません。
UnityもRailsも本を何冊か購入して勉強したのですが、肝心のUnityとRailsをどうやって連携させるのか、さっぱりわからないのです。
ブログで紹介されているコードをUnityとRailsのどの部分に挿入すればいいのかだけでも教えていただければ助かります。
RailsはContorollerファイルへの追記だけでいいのでしょうか?Unityに特殊なUnityEngineが必要なのではないでしょうか?
他、特別なことがあれば教えてください。
読者の方から相談メールをいただきました。
同じような悩みを持っている方向けに回答内容を一部紹介します。
紹介されてるコードをどの部分に挿入するか
Unityコードの解説
私が作ったパックマン風ゲームクエリちゃんドットイーターの場合、
Dotというタグがついたオブジェクトが0になった時がゲームクリアです。それを検出して、クリア画面を表示します。
public class GameManager : MonoBehaviour { void Update () { if (GameObject.FindGameObjectsWithTag("Dot").Length == 0) { Application.LoadLevel("Win"); } } }
クリア画面のStartイベントでWebAPIをコールします。
public class EndManager : MonoBehaviour { IEnumerator Start () { var url = "http://xxxx.com/dot/api/save.json?name=" + SceneChanger.userName + "&time="+ GameManager.elapsedTime; WWW www = new WWW(url); yield return www; JSONObject json = new JSONObject(www.text); rank= ""+ json.GetField("rank").n; msg1.text = "あなた(" + SceneChanger.userName + ")の"; msg3.text = "タイム " + GameManager.elapsedTime + "秒は"; msg2.text = rank + "位です!"; } }
Railsコードの解説
rails側は、Controllerクラスにapi_saveを追記して
config.rbでURLをマッピングします。このURLをUnity側でコールするのがポイントです。
Dot::Application.routes.draw do get 'dot/api/save' => 'dot#api_save' post 'dot/api/save' => 'dot#api_save' end
特殊なUnityEngine?
他、特別なことがあれば教えてください。
RailsからのレスポンスのJSONをパースするためにJSONObjectというライブラリを使っています。
Unity JSONObject
で検索すれば、かんたんに見つかるはずです。