Unity/photon/pun1/変数同期/シンプル
提供: 初心者エンジニアの簡易メモ
2021年8月11日 (水) 17:46時点におけるAdmin (トーク | 投稿記録)による版 (Admin がページ「Unity/photon/変数同期/シンプル」を「Unity/photon/pun1/変数同期/シンプル」に、リダイレクトを残さずに移動しました)
変数同期のサンプル
- ヒエラルキーにGameObjectをMemberという名前で作成
- MemberにAddComponentをしてPhotonViewを追加
- MemberにAddComponentをしてPhotonTransformViewを追加
- Memberに以下MemberScript.csも割り当てる。
- MemberのInspectorのPhotonViewのObserverdOptionにMemberScriptとPhotonTransformViewを指定する
- ヒエラルキーのMemberをプロジェクトのResourcesにプレハブとして追記する(ドラッグ)
- 部屋入室時に以下コードを実行
void OnJoinedRoom() { GameObject member = PhotonNetwork.Instantiate ("Member", new Vector3 (0.0f, 0.0f, 0.0f), Quaternion.Euler(Vector3.zero),0); }
MemberScript.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MemberScript : Photon.MonoBehaviour { public string str = "guest"; public float x = 0f; public float y = 0f; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnMouseDrag() { Debug.Log ("member ownerId=" + GetComponent<PhotonView> ().ownerId); Debug.Log ("member isMine=" + GetComponent<PhotonView> ().isMine); if (GetComponent<PhotonView>().isMine) { GetComponent<Renderer> ().material.color = Color.red; Vector3 objectPointInScreen = Camera.main.WorldToScreenPoint (this.transform.position); Vector3 mousePointInScreen = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, objectPointInScreen.z); Vector3 mousePointInWorld = Camera.main.ScreenToWorldPoint (mousePointInScreen); mousePointInWorld.z = this.transform.position.z; this.transform.position = mousePointInWorld; } } void OnPhotonSerializeView( PhotonStream stream, PhotonMessageInfo info ) { if (stream.isWriting) { Debug.Log ("member isWriting="+str); //データの送信 stream.SendNext(str); stream.SendNext(this.transform.position.x); stream.SendNext(this.transform.position.y); } else { Debug.Log ("member isread="+str); //データの受信 this.str = (string)stream.ReceiveNext(); this.x = (float)stream.ReceiveNext(); this.y = (float)stream.ReceiveNext(); this.transform.position = new Vector3 (x, y, transform.position.z); } } }