Я создаю сетевую 2D-игру для своего школьного проекта и столкнулся с проблемой при попытке заставить игрока «развиваться» в сетевом сценарии. Игрок будет правильно развиваться только на клиенте, а не на хосте. Код, вызывающий проблему, находится где-то в скрипте Evolve, но я не знаю, как показать проблему через код, так как проблема заключается в реализации кода. Следовательно, я прикрепил оба кода:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Networking;
using UnityEngine;
public class Evolve : NetworkBehaviour {
public bool canEvolve;
public bool isEvolving;
public int evoTimer;
public int timeToEvolve;
public int currentEvo;
public GameObject Evo0;
public GameObject Evo1;
public GameObject Evo2;
public GameObject nextEvo;
public GameObject nextA_Atk;
public GameObject nextB_Atk;
// Use this for initialization
void Start() {
canEvolve = true;
isEvolving = false;
evoTimer = 0;
timeToEvolve = GameObject.FindGameObjectWithTag("Settings").GetComponent<GameSettings>().timeToEvolve;
currentEvo = -1;
RpcCallEvolve();
}
// Update is called once per frame
void Update() {
if (!isLocalPlayer)
{
return;
}
if ((Input.GetButton("Evolve")) && (canEvolve == true))
{
isEvolving = true;
evoTimer += 1;
if (evoTimer >= timeToEvolve)
{
RpcCallEvolve();
}
}
else
{
isEvolving = false;
evoTimer = 0;
}
}
[ClientRpc(channel = 0)]
void RpcCallEvolve()
{
currentEvo += 1;
switch (currentEvo)
{
case 0:
nextEvo = Instantiate(Evo0) as GameObject;
break;
case 1:
nextEvo = Instantiate(Evo1) as GameObject;
break;
case 2:
nextEvo = Instantiate(Evo2) as GameObject;
break;
case 3:
Win(name);
break;
}
GetComponent<SpriteRenderer>().sprite = nextEvo.GetComponent<SpriteRenderer>().sprite;
GetComponent<PolygonCollider2D>().points = nextEvo.GetComponent<PolygonCollider2D>().points;
canEvolve = true;
evoTimer = 0;
Destroy(nextEvo);
}
void Win(string player)
{
Debug.Log("Winner is " + player);
gameObject.SetActive(false);
}
}
И ссылку на скачивание полного проекта, если это поможет людям разобраться в проблеме. https://1drv.ms/u/s!ArLjF5CAV1VwgbxZdCQkb_9PZ_j5kw
Мне не нужно, чтобы остальная часть кода была исправлена или приведена в порядок, просто информация о том, что может работать для вышеуказанной проблемы.
Большое спасибо всем, кто помогает.