Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

WWWForm

class in UnityEngine

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える

説明

WWW クラスを使用して Web サーバーにデータを POST するフォームを生成するヘルパークラスです。

// Grab a screen shot and upload it to a CGI script.
// The CGI script must be able to hande form uploads.

var screenShotURL= "http://www.my-server.com/cgi-bin/screenshot.pl";

// Take a screen shot immediately function Start() { UploadPNG(); }

function UploadPNG() { // We should only read the screen after all rendering is complete yield WaitForEndOfFrame();

// Create a texture the size of the screen, RGB24 format var width = Screen.width; var height = Screen.height; var tex = new Texture2D( width, height, TextureFormat.RGB24, false ); // Read screen contents into the texture tex.ReadPixels( Rect(0, 0, width, height), 0, 0 ); tex.Apply();

// Encode texture into PNG var bytes = tex.EncodeToPNG(); Destroy( tex );

// Create a Web Form var form = new WWWForm(); form.AddField("frameCount", Time.frameCount.ToString()); form.AddBinaryData("fileUpload", bytes, "screenShot.png", "image/png");

// Upload to a cgi script var w = WWW(screenShotURL, form); yield w; if (!String.IsNullOrEmpty(w.error)) print(w.error); else print("Finished Uploading Screenshot"); }
using UnityEngine;
using System.Collections;

public class WWWFormImage : MonoBehaviour {

public string screenShotURL= "http://www.my-server.com/cgi-bin/screenshot.pl";

// Use this for initialization void Start () { StartCoroutine(UploadPNG()); } IEnumerator UploadPNG() { // We should only read the screen after all rendering is complete yield return new WaitForEndOfFrame();

// Create a texture the size of the screen, RGB24 format int width = Screen.width; int height = Screen.height; var tex = new Texture2D( width, height, TextureFormat.RGB24, false );

// Read screen contents into the texture tex.ReadPixels( new Rect(0, 0, width, height), 0, 0 ); tex.Apply();

// Encode texture into PNG byte[] bytes = tex.EncodeToPNG(); Destroy( tex );

// Create a Web Form WWWForm form = new WWWForm(); form.AddField("frameCount", Time.frameCount.ToString()); form.AddBinaryData("fileUpload", bytes, "screenShot.png", "image/png");

// Upload to a cgi script WWW w = new WWW(screenShotURL, form); yield return w; if (!string.IsNullOrEmpty(w.error)) { print(w.error); } else { print("Finished Uploading Screenshot"); } } }

以下は SQL データベースのテーブルに保存されたハイスコアを取得するための サンプルスクリプトです。

// This example assumes that the user has entered their name into a
// variable called name and that score contains the user's current
// score.

var highscore_url = "http://www.my-site.com/highscores.pl"; var playName = "Player 1"; var score = -1;

function Start() { // Create a form object for sending high score data to the server var form = new WWWForm(); // Assuming the perl script manages high scores for different games form.AddField( "game", "MyGameName" ); // The name of the player submitting the scores form.AddField( "playerName", playName ); // The score form.AddField( "score", score );

// Create a download object var download = new WWW( highscore_url, form );

// Wait until the download is done yield download;

if(download.error) { print( "Error downloading: " + download.error ); return; } else { // show the highscores Debug.Log(download.text); } }
using UnityEngine;
using System.Collections;

public class WWWFormScore : MonoBehaviour { string highscore_url = "http://www.my-site.com/highscores.pl"; string playName = "Player 1"; int score = -1;

// Use this for initialization IEnumerator Start () { // Create a form object for sending high score data to the server WWWForm form = new WWWForm(); // Assuming the perl script manages high scores for different games form.AddField( "game", "MyGameName" ); // The name of the player submitting the scores form.AddField( "playerName", playName ); // The score form.AddField( "score", score );

// Create a download object WWW download = new WWW( highscore_url, form );

// Wait until the download is done yield return download;

if(!string.IsNullOrEmpty(download.error)) { print( "Error downloading: " + download.error ); } else { // show the highscores Debug.Log(download.text); } } }

以下は SQL データベースのテーブルに保存されたハイスコアを処理する Perl の サンプルスクリプトです。

#!/usr/bin/perl
# The SQL database needs to have a table called highscores
# that looks something like this:
#
#   CREATE TABLE highscores (
#     game varchar(255) NOT NULL,
#     player varchar(255) NOT NULL,
#     score integer NOT NULL
#   );
#
use strict;
use CGI;
use DBI;

# Read form data etc. my $cgi = new CGI;

# The results from the high score script will be in plain text print $cgi->header("text/plain");

my $game = $cgi->param('game'); my $playerName = $cgi->param('playerName'); my $score = $cgi->param('score');

exit 0 unless $game; # This parameter is required

# Connect to a database my $dbh = DBI->connect( 'DBI:mysql:databasename', 'username', 'password' ) || die "Could not connect to database: $DBI::errstr";

# Insert the player score if there are any if( $playerName && $score) { $dbh->do( "insert into highscores (game, player, score) values(?,?,?)", undef, $game, $playerName, $score ); }

# Fetch the high scores my $sth = $dbh->prepare( 'SELECT player, score FROM highscores WHERE game=? ORDER BY score desc LIMIT 10' ); $sth->execute($game); while (my $r = $sth->fetchrow_arrayref) { print join(':',@$r),"\n" }

変数

dataフォームを送信するときに POST のリクエストボディに渡す生のデータ(読み取り専用)
headers WWW クラスを使用してフォームを POST するための正しいリクエストヘッダーを返します(読み取り専用)

コンストラクタ

WWWForm空の WWWForm オブジェクトを作成します

Public 関数

AddBinaryDataフォームにバイナリデータを追加します
AddFieldフォームにシンプルなフィールドを追加します