【Unity】Wikipedia로부터 정보를 취득해 표시시켜 본다 【재료】

12139 단어 Wikipedia재료C#Unity

소개



Wikipedia의 정보를 Unity상에서 취득해 Unity상에서 표시시키고 싶다. 라고 생각했기 때문에 만들어 보았습니다.

이 기사에서는 버전 5.3.5f1의 Unity를 사용합니다.

만든 것에 대해



지정한 Wikipedia 기사가 어느 기사로부터 링크되고 있는지를 취득해 표시시키는 것만을 만들어 보았습니다.



Wikipedia 정보를 표시할 때까지의 흐름



서서히 쓰면 이런 느낌이 듭니다.

WWW 클래스를 사용하여 Wikipedia에서 JSON 얻기
JsonUtility를 사용하여 JSON을 Object로 변환
'>> Object를 멤버 변수에 저장 (인스펙터에 표시됨)

소스 코드



다음은 소스 코드입니다. 장면의 적당한 오브젝트에 부착하여 재생하면 움직입니다.

WikipediaManager.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class WikipediaManager : MonoBehaviour
{
    public string title = "シーラカンス";

    public Wikipedia.RootObject wikipedia;

    IEnumerator Start()
    {
        var param = new Dictionary<string, string> ();

        param ["format"] = "json"; // JSON形式で取得
        param ["action"] = "query"; // アクション
        param ["prop"] = "links"; // リンクを取得
        param ["bltitle"] = title; // 記事タイトル
        param ["list"] = "backlinks"; // リンク元を取得
        param ["bllimit"] = "16"; // 取得するリンク数の上限

        // WikipediaからJSONを取得
        WWW www = this.GET("http://ja.wikipedia.org/w/api.php?", param);
        yield return www;
        Debug.Log(www.text);

        // JSONデータ -> Wikipediaオブジェクト
        var wikipedia = JsonUtility.FromJson (www.text, typeof(Wikipedia.RootObject)) as Wikipedia.RootObject;
        this.wikipedia = wikipedia;
    }

    private WWW GET(string url, Dictionary<string,string> param)
    {
        foreach (var p in param)
        {
            url += string.Format ("{0}={1}&", p.Key, p.Value);
        }

        WWW www = new WWW (url);
        StartCoroutine (WaitForRequest (www));
        return www;
    }

    private IEnumerator WaitForRequest(WWW www)
    {
        yield return www;

        // check for errors
        if (www.error == null) {
            Debug.Log ("WWW OK");
        } else {
            Debug.Log ("WWW Error: " + www.error);
        }
    }
}

다음은 JSON deserialize 용으로 준비된 클래스입니다.

Wikipedia.cs
using UnityEngine;
using System.Collections.Generic;

namespace Wikipedia
{
    [System.Serializable]
    public class Backlink
    {
        public int pageid;
        public int ns;
        public string title;
        public string redirect;
    }

    [System.Serializable]
    public class Query
    {
        public List<Backlink> backlinks;
    }

    [System.Serializable]
    public class RootObject
    {
        public string batchcomplete;
        public Query query;
    }
}

Title을 변경하고 실행해 봅니다.



제목을 변경하고 실행하면 다른 결과가 표시됩니다.

시험에 맥도날드와 넣어 보면 ....

우타다 히카루 에서 링크된 것 같습니다.



대부분 아래쪽에있었습니다. 문자열을 적당히 넣는 것만으로도 꽤 놀 수 있군요. (완전

참고 URL



MediaWiki API를 사용하여 Wikipedia 정보 얻기
http://qiita.com/yubessy/items/16d2a074be84ee67c01f#%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E3%83%AA%E3%83%B3 %E3%82%AF%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E8%A8%98%E4%BA%8B%E3%81%AE%E4 %B8%80%E8%A6%A7%E3%82%92%E5%8F%96%E5%BE%97

Json에서 C# 클래스 모델을 만드는 사이트 링크
h tp : // 쿠이타. 이 m/마에다_t/있어 ms/8이다 3아 c3826988아 df6f32

Unity5.3에서 Json을 다루는 요약
h tp : // 쿠이타. 이 m / 잡아 P / ms / 53 639f267 8845 42

좋은 웹페이지 즐겨찾기