Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Resolved Disabling component works but also doesn't at the same time

Discussion in 'Multiplayer' started by jlorenzi, May 21, 2023.

  1. jlorenzi

    jlorenzi

    Joined:
    May 2, 2021
    Posts:
    290
    So this is a confusing issue. I have a script for each class in my game. When a player selects a new class all the scripts for the other classes get unenabled and then the one they select gets enabled.
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4.  
    5. public class SelectElement : MonoBehaviour
    6. {
    7.     public enum Element {fire, earth, water};
    8.     public Element element = new Element();
    9.     public Firebending fire;
    10.     public Earthbending earth;
    11.     public Waterbending water;
    12.     public RoundManager roundManager;
    13.  
    14.     void OnTriggerEnter(Collider other)
    15.     {
    16.         if ( other.CompareTag("Player") )
    17.         {
    18.             Debug.Log("selected element"); // works as expected
    19.             earth.enabled = false;
    20.             fire.enabled = false;
    21.             water.enabled = false;
    22.             switch ( element )
    23.             {
    24.                 case Element.fire:
    25.                     fire.enabled = true;
    26.                     break;
    27.                 case Element.earth:
    28.                     earth.enabled = true;
    29.                     break;
    30.                 case Element.water:
    31.                     water.enabled = true;
    32.                     break;
    33.             }
    34.  
    35.             roundManager.enabled = true;
    36.         }
    37.     }
    38. }
    39.  
    but even though this code seems to work (e.g. in the inspector the only script that's enabled is the one that the player selected), the player can still use all the skills from the classes that used to be enabled.

    If I made that script run on the server-side wouldn't it select every players class? How can I fix this issue?

    I'm using Photon PUN by the way.
     
  2. tobiass

    tobiass

    Joined:
    Apr 7, 2009
    Posts:
    3,062
    PUN does not really have a "server side". Collisions are running locally on each client and unless you manually sync the selected class for some player, this is only a local state variable.

    You probably want to set the class as some Custom Player Property. That gets synced to everyone in the room and can be used to enable / disable scripts.