Keikun Official Site
Top | Profile | Blog | Product |
Blog

Unity WebAPIを使ってデータを扱う

2020-03-17 13:19:43

環境

PHP(Laravel5)
Unity 2019.1.4f1 (64-bit)

概要

WebAPIを使った通信とデータ扱い。
・UnityWebRequest
APIのリクエストするため

・JsonUtility
APIで取得したjsonを使うため

この二点を使う。

実装

Model.cs
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5.  
  6. public class Model
  7. {
  8. public int id;
  9. public int name;
  10. public int hp;
  11.  
  12. string access_url = "https://hoge.com/api/v1";
  13.  
  14. [System.Serializable]
  15. public class Character
  16. {
  17. public int id;
  18. public string name;
  19. public int hp;
  20. }
  21.  
  22. [System.Serializable]
  23. public class Characters
  24. {
  25. public Character[] characters;
  26. }
  27.  
  28. public IEnumerator ApiRequest()
  29. {
  30. UnityWebRequest request = UnityWebRequest.Get(access_url);
  31. request.SetRequestHeader("Content-Type", "application/json");
  32. yield return request.SendWebRequest();
  33.  
  34. Characters characters = JsonUtility.FromJson<Characters>("{\"characters\":" + request.downloadHandler.text + "}");
  35.  
  36. id = characterClass.characters[0].id;
  37. name = characterClass.characters[0].name;
  38. hp = characterClass.characters[0].hp;
  39. }
  40. }

使い方

読み込まれた時点で呼びだしてあげればいいかと思います。
後は好みでどうぞ

  1. public void Start()
  2. {
  3. StartCoroutine(getModel());
  4. }
  5.  
  6. IEnumerator getModel()
  7. {
  8. characterModel = new CharacterModel();
  9. yield return StartCoroutine(characterModel.ApiRequest());
  10. // 以下表示させるなど
  11. }

PHP - Laravel

特別なことはしてない
LaravelのModelを読んでreturnで返すだけです。

  1. namespace App\Http\Controllers;
  2. use App\Models\Character;
  3.  
  4. class ApiController extends Controller
  5. {
  6. public function index()
  7. {
  8. return Character::all();
  9. }
  10. }