サーバーと通信する方法がいくつかありますが、クラスの関数でwwwを使用すると、実行されません。クラスで使用するコードと同じようにwwwを使用するかどうかを確認するには、実行しません。何が起こっているのか知ってください、助けてください!
質問する
2691 次
1 に答える
1
MonoBehaviourを継承する新しいクラスを作成し、それを呼び出します。
Javascript(unity)の方法の例//タイムズスクエアの「Friday's」の外から最新のウェブカメラショットを取得しますvar url = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg"; function Start(){//指定されたURLのダウンロードを開始しますvar www:WWW = new WWW(url);
// Wait for download to complete
yield www;
// assign texture
renderer.material.mainTexture = www.texture;
}
[編集]C#の方法の例
/// Gets the response.
///
/// <param name="StrURL">The URL.
/// HTML source
public string GetResponse(string StrURL)
{
string strReturn = "";
HttpWebRequest objRequest = null;
IAsyncResult ar = null;
HttpWebResponse objResponse = null;
StreamReader objs = null;
try
{
objRequest = (HttpWebRequest)WebRequest.Create(StrURL);
ar = objRequest.BeginGetResponse(new AsyncCallback(GetScrapingResponse), objRequest);
//// Wait for request to complete
ar.AsyncWaitHandle.WaitOne(1000 * 60, true);
if (objRequest.HaveResponse == false)
{
throw new Exception("No Response!!!");
}
objResponse = (HttpWebResponse)objRequest.EndGetResponse(ar);
objs = new StreamReader(objResponse.GetResponseStream());
strReturn = objs.ReadToEnd();
}
catch (Exception exp)
{
throw exp;
}
finally
{
if (objResponse != null)
objResponse.Close();
objRequest = null;
ar = null;
objResponse = null;
objs = null;
}
return strReturn;
}
/// Gets the scraping response.
///
/// <param name="result">The result.
protected void GetScrapingResponse(IAsyncResult result)
{
//here you will need to cast/parse the response into what ever type you require e.g. a texture, an xml file, an asset bundle, ect.
}
そのように電話する
GetResponse('http://images.earthcam.com/ec_metros/ourcams/fridays.jpg');
[編集]
基本的に、UnityのJavascriptファイルはMonoBehaviorから自動的に継承されます。
モノビヘイビアー(例1)を継承するクラスを作成して作業を行うことは絶対にできない/できないと確信している場合は、URLに対して通常のXMLHttpRequestを実行する方法を尋ねます。
ここでのJavascriptの例:
var xmlHttp = null;
function GetServerInfo()
{
var Url = "http://localhost";
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = ProcessRequest;
xmlHttp.open( "GET", Url, true );
xmlHttp.send( null );
}
function ProcessRequest()
{
if ( xmlHttp.readyState == 4 && xmlHttp.status == 200 )
{
if ( xmlHttp.responseText == "Not found" )
{
}
else
{
var info = eval ( "(" + xmlHttp.responseText + ")" );
//Here is where it will get super tricky. You will need to parse these objects into unity objects.
}
}
}
これの本当に複雑な部分は、http応答をユニティオブジェクトに解析する必要があるということです...
于 2012-05-23T01:51:22.080 に答える