Граф Смертей в многопользовательской игре - PullRequest
0 голосов
/ 06 апреля 2020

Я играю в многопользовательскую игру с использованием фотонов, и я хочу, чтобы количество смертей моего игрока учитывалось каждый раз, когда его убили. Я использовал этот скрипт, но я не добавил никаких photonView.IsMine, потому что каждый раз, когда мой игрок умирает, текст с холста остается: Смертей: 0. Сценарий, который я использовал для смерти, это

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon;
using Photon.Pun;




public class DeathsCount : MonoBehaviour
{

    public Text countText;
    
    public int deathcount;



     void Start()
    {
        countText = GetComponent<Text>();

        deathcount = 0;
            CmdDeathsCount();
       
    }
    void CmdDeathsCount()
    {
       
        countText.text = "Death: " + deathcount.ToString();
    }

   void  CmdSetDeathsCount(int newCount)
    {
        deathcount = newCount;
    }
    public void RpcRespawn()
    {
        Debug.Log(deathcount);

            deathcount = deathcount + 1;
            CmdDeathsCount();
        
    }
}

и функция в скрипте моего персонажа, которую я использовал для повреждения игрока и смерти:

   [PunRPC]
    void Damage()
    {
        Debug.Log("I damaged");

        Health -= 20;
        if (Health <= 0) // check health status
        {
            Health = 0; // make that Heath don't be < 0

            if (photonView.IsMine)
            {
                myCounts.RpcRespawn(); //Here you should to call counter
            }
        }

    }

1 Ответ

2 голосов
/ 07 апреля 2020

Вам нужно добавить метод, чтобы просто увеличить количество смертей в подсчете смерти и вызывать его при определении смерти.

void IncreaseDeathsCount()
{

    deathcount++;
    CmdDeathsCount()
}

[PunRPC]
    void Damage()
    {
        Debug.Log("I damaged");

        Health -= 20;
        if (Health <= 0) // check health status
        {
            Health = 0; // make that Heath don't be < 0

            if (photonView.IsMine)
            {
                myCounts.RpcRespawn(); //Here you should to call counter
                DeathsCount.cmdDeathsCount;
            }
        }

    }

Однако вам придется либо сделать cmdDeathsCount как состояние c, либо добавить ссылку на свой экземпляр, чтобы иметь возможность вызывать его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...