개발일지/팀GC

06/14 유니티에서 node.js 서버를 통해 DB내용 출력하기

박준희 2021. 6. 14. 16:25
유니티에서 node.js 서버를 통해 DB내용 출력하기

1. DB데이터 저장

 

2. node.js 서버 실행

서버 코드

web.js

const express = require('express')

const db_config = require(__dirname + '/config/database.js');
const conn = db_config.init();

var app = express()
app.use(express.json())

app.get('/newslist', (req, res) => {
  conn.query('SELECT * FROM `news`', function (error, results, fields) {
    if (error) throw error;
    console.log(results);
    res.json(results);
    res.end();
    });
})

//포트설정
app.listen(8002, () => {
  console.log('> server start! ')
})

config/database.js

let mysql = require('mysql');
let db_info = {
    host : '127.0.0.1',//db주소
    port : '3306',
    user : '',//db유저
    password : '',//db암호
    database : ''//db이름
}

module.exports = {

    init: function () {
        return mysql.createConnection(db_info);
    },
    connect: function (conn) {
        conn.connect(function(err) {
            if(err) console.error('mysql connection error : ' + err);
            else console.log('mysql is connected successfully!');
        });
    }
    
}

 

3. 유니티에서 프로젝트 실행

 

유니티 코드

using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class Statistics : MonoBehaviour
{
    public RawImage testImage;
    public Text title;
    public Text contents;

    private string jsonText;
    // Start is called before the first frame update
    void Start()
    {   
        StartCoroutine(GetRequest("http://localhost:8002/newslist"));
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    IEnumerator CoLoadImageTexture(string url)
    {
        UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);
        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            testImage.texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
        }
    }

    IEnumerator GetRequest(string uri)
    {
        using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
        {
            // Request and wait for the desired page.
            yield return webRequest.SendWebRequest();

            string[] pages = uri.Split('/');
            int page = pages.Length - 1;

            switch (webRequest.result)
            {
                case UnityWebRequest.Result.ConnectionError:
                case UnityWebRequest.Result.DataProcessingError:
                    Debug.LogError(pages[page] + ": Error: " + webRequest.error);
                    break;
                case UnityWebRequest.Result.ProtocolError:
                    Debug.LogError(pages[page] + ": HTTP Error: " + webRequest.error);
                    break;
                case UnityWebRequest.Result.Success:
                    Debug.Log(pages[page] + ":\nReceived: " + webRequest.downloadHandler.text);
                    jsonText = webRequest.downloadHandler.text;
                    NewsListData[] newsListDatas = JsonConvert.DeserializeObject<NewsListData[]>(jsonText);
                    StartCoroutine(CoLoadImageTexture(newsListDatas[0].img_url));
                    title.text = newsListDatas[0].title;
                    contents.text = newsListDatas[0].contents;
                    break;
            }
        }
    }

}

 

참고

http://makingappfor.blogspot.com/2019/12/unity-url.html

 

[Unity] 웹 url에서 이미지를 가져와 출력하기

유니티에서 웹 상의 이미지를 가져다 출력하고 싶다면 public RawImage testImage; Image 가 아닌 RawImage를 사용한다. IEnumerator CoLoadImageTexture(string url) { U...

makingappfor.blogspot.com