Jump to content
Unity Insider Forum

Photon Variable über das Netzwerk ändern


Recommended Posts

Moin,

 

Ich glaube ehrlich gesagt dass mir etwas sehr leichtes entgeht. Ich sitze nun schon den ganzen Tag an dem Problem..

Also, in meinem Online-Spiel möchte ich das alle Spieler andere Farben haben, sie sollen jedoch alle das selbe Prefab haben. Also hab ich drei verschiedene Materialien zu dem "SetPlayer"-Script hinzgefügt. Je nach dem welchen PlayerCount der Spieler hat soll durch den Index die Farbe ausgewählt und im Material slot des SpriteRenderers eingefügt werden. Das funktioniert auch gut. Jedoch bekomme ich es einfach nicht hin die Variable auch für das Äquivalent auf dem Bildschrim des anderen Spielers zu ändern. Dort bekommt es dann einfach die Farbe des Spielers der dort ist, also haben dann beide die selbe Farbe. Ich hatte es bereits gelöst indem mit if(!isMine){playerCount = (view.ViewID - 1) / 1000; } schrieb, aber mal ehrlich, das funktioniert nur weil die ID glücklicherweise gleichmäßig ansteigt. 

Ich hoffe ihr könnt überhaupt verstehen was ich meine, ich kann von dem ganzen hin und her garnicht mehr denken.

 

Der Code:

public class SetPlayer : MonoBehaviour
{

    public Material blueMat, greenMat, yellowMat;

    public Material[] mats;

  

    public GameObject cam;

    PhotonView view;

    public int playerCount;
   
    // Start is called before the first frame update
    void Start()
    {
        cam = FindObjectOfType<CinemachineVirtualCamera>().gameObject;
       
        mats = new Material[] { blueMat, greenMat, yellowMat };

        
      

        view = GetComponent<PhotonView>();
        if (view.IsMine)
        {
            cam.GetComponent<CinemachineVirtualCamera>().Follow = transform;
            transform.GetChild(1).gameObject.SetActive(true);


            view.RPC("SetCountRPC", RpcTarget.AllBuffered);
        }
        if (!view.IsMine)
        {

            

            //playerCount = (view.ViewID - 1) / 1000;
            
        }


        GetComponent<SpriteRenderer>().material = mats[playerCount - 1];





    }


    [PunRPC]
    public void SetCountRPC()
    {




        playerCount = PhotonNetwork.LocalPlayer.ActorNumber;

    }


    
}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...