Hagoita: https://github.com/withstandist/hagoita
今回は、簡単な動作テストのため、HKURLProtocolをカスタマイズしたものを使います。
つまり、普通にNSURLProtocolとUnityの連携になります。
1,Unityで,uGUIでボタンを作成
using UnityEngine;
using System.Collections;
public class buttonAction : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void ClickTest () {
Debug.Log ("Clicked.");
StartCoroutine(Get("http://localhost:7777/test"));
}
IEnumerator Get (string url) {
// 送信開始
WWW www = new WWW (url);
yield return www;
// 成功
if (www.error == null) {
Debug.Log ("Get Success");
} else {
Debug.Log ("Get ERROR");
}
}
}
2、HKURLProtocolカスタムを用意
//
// HKURLProtocol.m
// Unity-iPhone
//
// Created by KIMITA Yusuke on 2015/04/09.
//
//
#import "HKURLProtocol.h"
@implementation HKURLProtocol
+ (BOOL)canInitWithRequest:(NSURLRequest *)request{
NSLog(@"canInitWithRequest");
return YES;
}
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
{
return request;
}
- (void)startLoading
{
//Alertをだしてみた
UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
[self responseJSONWithHttpStatusCode:200 data:[@"{}" dataUsingEncoding:NSUTF8StringEncoding]];
}
- (void) responseJSONWithHttpStatusCode:(int)statusCode data:(NSData*) data{
NSDictionary*headers = [NSDictionary dictionaryWithObjectsAndKeys:@"application/json", @"Content-Type",
[NSString stringWithFormat:@"%ld",[data length]], @"Content-Length",
nil];
NSHTTPURLResponse* response = [[NSHTTPURLResponse alloc] initWithURL:[self.request URL]
statusCode:statusCode
HTTPVersion:@"1.1"
headerFields:headers];
[self.client URLProtocol:self
didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[self.client URLProtocol:self didLoadData:data];
[self.client URLProtocolDidFinishLoading:self];
}
- (void)stopLoading
{
}
@end
3、UnityAppController.mmでNSURLProtocolを登録する
- (void)startUnity:(UIApplication*)application
{
[NSURLProtocol registerClass:HKURLProtocol.class];
4、結果
できました。
アンドロイドでの同様な仕組みができれば、使い道は広がりそうです。
0 件のコメント:
コメントを投稿