bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

ネットワーク

ネットワークを使ったテストを作った。
1.板を置き、平行光源を置いたゲームオブジェクトをプレファブ化
2.キューブを置き「Player」とリネイムし、Player.csスクリプトとRigidbody、NetworkViewを追加
3.「Player」をプレファブ化
4.空のゲームオブジェクトを作成してModule.csスクリプトを追加
5.WebPlayerでビルドして、ブラウザで2つ開く
6.1つは「Host」、もう一つは「Connect」を選ぶ

https://dl.dropbox.com/u/67579260/Unity/Test04/WebPlayer/WebPlayer.html

Player.cs

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if(networkView.isMine) {
			if(Input.GetMouseButtonDown(0)) {
				rigidbody.AddForce(1000.0f*Vector3.up);
			}
		}
	}
	
	
	void OnGUI() {
		if(networkView.isMine) {
			GUI.Label(new Rect(100,100,100,100), networkView.viewID.ToString());
		}
	}
}


Module.cs

using System.Collections;

public class Module : MonoBehaviour {
	
	public GameObject m_Prefab = null;
	public string m_IP = "127.0.0.1";
	public string m_Port = "4211";
	public bool m_Connected = false;
	
	/* プレイヤー. */
	void CreatePlayer() {
		m_Connected = true;
		int posNo = Random.Range(0, transform.childCount);
		Transform childTransform = transform;
		GameObject obj = Network.Instantiate(m_Prefab, new Vector3(posNo,10,0), childTransform.rotation, 1) as GameObject;
		Color [] s_Color = {
			Color.red, Color.blue, Color.green, Color.magenta,
		};
		obj.renderer.material.color = s_Color[posNo%4];
	}

	public void OnDisconnectedFromServer() {
		m_Connected = false;
	}
	
	public void OnPlayerDisconnected(NetworkPlayer player) {
		Network.DestroyPlayerObjects(player);
	}
	
	public void OnConnectedToServer() {
		Network.sendRate = 60.0f;
		CreatePlayer();
	}
	
	public void OnServerInitialized() {
		Network.sendRate = 60.0f;
		CreatePlayer();
	}
	
	void OnGUI() {
		if(!m_Connected) {
			m_IP = GUI.TextField(new Rect(30,10,90,20), m_IP);
			m_Port = GUI.TextField(new Rect(30,40,90,20), m_Port);
			if(GUI.Button(new Rect(30,70,90,20), "Connect")) {
				Network.Connect(m_IP, int.Parse(m_Port));
			}
			if(GUI.Button(new Rect(30,100,90,20), "Host")) {
				Network.InitializeServer(10, int.Parse(m_Port), false);
			}
		}
	}
}