RPCとは
簡単に言うと全てのPCで同じメソッドを実行する仕組みですね
この機能自体はUnityのRPCを使用しているので調べる時は「Unity RPC」で調べてみるといいかもしれません
サンプルとしてある「DemoBoxes」の OnAwakePhysicsSettings.cs にコードを追加して試してみました
OnAwakePhysicsSettings.cs
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(PhotonView))]
public class OnAwakePhysicsSettings : Photon.MonoBehaviour
{
// this tiny script "disables" the rigidbody for remotely controlled GameObjects (owned by someone else)
void Awake ()
{
if (!this.photonView.isMine) {
Rigidbody attachedRigidbody = this.GetComponent<Rigidbody> ();
if (attachedRigidbody != null) {
attachedRigidbody.isKinematic = true;
}
}
}
///追加
void OnMouseDown ()
{
// Boxをクリックしたら色が変わる
photonView.RPC ("ChangeColor", PhotonTargets.All);
}
///追加
[RPC]
void ChangeColor ()
{
renderer.material.color = Color.red;
}
}
チャットの仕組み
RPCを理解していれば簡単に作成出来ます
ChatSample.cs
using UnityEngine;
using System.Collections.Generic;
[RequireComponent(typeof(PhotonView))]
public class ChatSample : Photon.MonoBehaviour
{
List<string> list = new List<string> ();
string message = "";
void OnGUI ()
{
//メッセージ入力
message = GUILayout.TextField (message);
//メッセージ送信
if (GUILayout.Button ("Send")) {
photonView.RPC ("AddMessage", PhotonTargets.All, message);
message = "";
}
//メッセージ表示
foreach (var text in list) {
GUILayout.Label (text);
}
}
[RPC]
void AddMessage (string text)
{
list.Add (text);
}
}