Hassan Nasir
Hassan Nasir

Reputation: 1

Unity Dedicated Server data synchronization

I'm using netcode with unity's dedicated server. I want to start timer at a specific time when enemy collide with player and show this timer to all players inside server. But serverRPC cannot call in dedicated server. Dont know how to send data to server in this case.

private NetworkVariable<float> timerNetworkVariable = new NetworkVariable<float>(30,NetworkVariableReadPermission.Everyone,NetworkVariableWritePermission.Server);
private void Update()
{
    if (!IsServer)
    {
        Debug.Log("Client Enemy Utility");
        return;
    }
    Debug.Log("Is Server Enemy Utility");


    private void OnTriggerEnter(Collider other)
{
    Debug.Log("Trigger Enter CLeint");
    //Debug.Log("Before server in colliisno");
    if (!IsServer) return;
    Debug.Log("Trigger Enter Server");
    if (other.CompareTag("Player"))
    {           
        //if (!waitTimer)
        //{
        //    waitTimer = true;
        //}
        //Debug.Log("Wait Timer in collision" + waitTimer);
        GetPlayers();
        startFollower = true;
    }
}

Is server is not working in ontrigger enter how can i send data to server to start timer

    public GameObject timerPanel;
public TextMeshProUGUI txtTimer;
private NetworkVariable<float> timerNewNetwork=new NetworkVariable<float>(30);
bool timeStatus = false;
bool testBool = false;
    [ServerRpc(RequireOwnership = false)]
private void TimerTestServerRpc(bool status)
{
    Debug.Log("TimerTestServerRPC");
    Timer(status);
    int val = Random.Range(1, 100);
    timerNewNetwork.Value -= val;
    TimerTestClientRpc();
}
    [ClientRpc]
private void TimerTestClientRpc()
{
    Debug.Log("Inside CLient RPC");
    if (!timerPanel.activeInHierarchy )
    {
        timerPanel.SetActive(true);
    }
    timerNewNetwork.Value -= 10;
    txtTimer.text = timerNewNetwork.Value + "";
}
    void Timer(bool status)
{
    testBool = true;
    timerNewNetwork.Value -= 10;
    Debug.Log("testBool: " + testBool);
}
    private void Update()
{
    TimerTestServerRpc(true);
}
    private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        timeStatus = true;
    }
}

I updated demo script using server rpc and client rpc

Upvotes: 0

Views: 52

Answers (0)

Related Questions