#photon
Вопрос:
Здесь я сделал простой скрипт фонарика в многопользовательском режиме unity photon, используя RPC. Скрипт установил активный и ложный фонарик игрового объекта. Когда я запускаю игру, мне кажется, что в консоли нет ошибок. В любом случае, 2 клиента не синхронизируют изменения фонарика
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Photon.Pun; public class flashlight : MonoBehaviourPunCallbacks { public GameObject FlashlightLight; private bool flashlightActive = false; PhotonView view; public GameObject player; //public bool active; void Start() { view = this.GetComponentlt;PhotonViewgt;(); } [PunRPC] public void Light(bool active) { if (view.IsMine) { if(active == true) { FlashlightLight.gameObject.SetActive(true); } if(active == false) { FlashlightLight.gameObject.SetActive(false); } } } void Update() { if (Input.GetKeyDown(KeyCode.F)) { view.RPC("Light", RpcTarget.AllBuffered, true); } if (Input.GetKeyDown(KeyCode.G)) { view.RPC("Light", RpcTarget.AllBuffered, false); } } }
Комментарии:
1. — Я бы не стал буферизировать вызовы RPC. —
MonoBehaviourPunCallbacks
уже включаетphotonView
ссылку. — Может быть, состояние освещения должно быть свойством комнаты или игрока и использоватьсяSetCustomProperties
вместо RPC? — Код можно было бы очистить и оптимизировать за меньшее количество строк.