Unity로 HTTP 요청을 처리해 보십시오.
8977 단어 Unity
. NET 표준에 탑재된
HttpListener
을 사용하여 HTTP 요청을 받은 처리를 작성할 수 있습니다.최근 Unity에 스크립트 실행 시간이 개설되었습니다.NET4.6 환경에서 설정async/await
할 수 있기 때문에 더 간단한 방법으로 설명할 수 있다.이 기사는 Unity의 이벤트 시스템을 결합시켜 클릭 이벤트처럼 HTTP 요청을 처리할 수 있는 구조를 만들었다.
HTTP 서버의 구성 요소 만들기
먼저 다음 스크립트를 작성합니다.
HttpServer.cs
using System.Net;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
[System.Serializable]
public class OnRequestEvent : UnityEvent<HttpListenerContext> { }
public class HttpServer : MonoBehaviour
{
private HttpListener httpListener = new HttpListener();
// エディター上から設定する
public int port = 8080;
public string path = "/";
public bool startOnAwake = true;
// リクエスト処理するイベントハンドラー。エディター上から設定する。
public OnRequestEvent OnRequest;
void Start()
{
httpListener.Prefixes.Add("http://*:" + port + path); // http://*:8080/ のようになる
// コンポーネントの開始時に自動起動
if (startOnAwake)
{
StartServer();
}
}
// リクエストの受け付けを開始する
public async Task StartServer()
{
httpListener.Start();
while (true)
{
// リモートからの接続を待機
var context = await httpListener.GetContextAsync();
// 着信ログを表示
Debug.Log("Request path: " + context.Request.RawUrl);
OnRequest.Invoke(context);
}
}
// サーバーを停止する
public void StopServer()
{
httpListener.Stop();
}
// 破棄時にサーバーを止める
void OnDestroy()
{
StopServer();
}
}
그리고 장면에 빈 게임 대상을 만들고 위의 스크립트를 첨부합니다.이렇게 될 것 같아서요.
HTTP 요청 처리
다른 빈 게임 대상을 만들고 다음 스크립트를 작성하십시오:.
MyRequestHandler.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net;
public class MyRequestHandler : MonoBehaviour
{
public string message = "Hello from Unity!";
public void OnRequest(HttpListenerContext context)
{
// message の内容をバイト配列に変換してレスポンスを返す
var data = System.Text.Encoding.UTF8.GetBytes(message);
context.Response.StatusCode = 200;
context.Response.Close(data, false);
}
}
연결 스크립트
마지막으로 HTTP 서버의 스크립트와 HTTP 요청을 처리하는 스크립트를 붙입니다.HTTP 서버의 게임 대상을 선택하고, 색인기의 On Request (Http Listener Context) 부분의 오른쪽 아래에 있는 + 아이콘을 선택하여 항목을 추가합니다.
None(Object) 오른쪽에 있는 점을 선택하고 HTTP 요청을 처리할 스크립트가 설정된 게임 객체를 선택합니다.
No Function에서 My Request Handler→On Request 순으로 내려갑니다.
이렇게 되면 OK야.
시험해 보다
그럼, 이 정도면 게임을 해보자.브라우저 액세스http://localhost:8080/를 엽니다.이후 Unity 편집에 초점을 맞추지 않으면 스크립트가 실행되지 않습니다. HTTP 응답을 복구할 수 없습니다.
브라우저에
Hello from Unity!
라는 글자가 나오면 성공합니다.
Reference
이 문제에 관하여(Unity로 HTTP 요청을 처리해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/niusounds/items/69bb1a32d04d2959c96f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)