Как передавать SpriteRenderer и TextMesh в функцию PunRPC

Делаю мультиплеерную игру на PUN2, я решил добавить в игру скины. При вызове функции changeSprite у всех клиентов спрайт игрока запустившего эту функцию должен поменятся на его скин, тоже самое с текстом.

    [PunRPC]
    void changeSprite(string skin, string nick, SpriteRenderer spr, TextMesh txt) {
        txt.text = nick;
        switch(skin) {
            case "Inverse":
                spr.sprite = skins[1];
                break;
            case "Rock":
                spr.sprite = skins[2];
                break;
            case "Rocket":
                spr.sprite = skins[3];
                break;
            case "AHAHAHA":
                spr.sprite = skins[4];
                break;
            
        }
    }

При запуске игры выдаёт такую ошибку

Exception: Write failed. Custom type not found: UnityEngine.SpriteRenderer
ExitGames.Client.Photon.Protocol18.WriteCustomType (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:741)
ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:99)
ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:29)
ExitGames.Client.Photon.Protocol18.WriteObjectArray (ExitGames.Client.Photon.StreamBuffer stream, System.Collections.IList array, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:642)
ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:159)
ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:29)
ExitGames.Client.Photon.Protocol18.WriteHashtable (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:434)
ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:132)
ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:29)
ExitGames.Client.Photon.Protocol18.WriteParameterTable (ExitGames.Client.Photon.StreamBuffer stream, ExitGames.Client.Photon.ParameterDictionary parameters) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:241)
ExitGames.Client.Photon.Protocol18.SerializeOperationRequest (ExitGames.Client.Photon.StreamBuffer stream, System.Byte operationCode, ExitGames.Client.Photon.ParameterDictionary parameters, System.Boolean setType) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/Protocol18Write.cs:276)
ExitGames.Client.Photon.PeerBase.SerializeOperationToMessage (System.Byte opCode, ExitGames.Client.Photon.ParameterDictionary parameters, ExitGames.Client.Photon.EgMessageType messageType, System.Boolean encrypt) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/PeerBase.cs:683)
ExitGames.Client.Photon.PhotonPeer.SendOperation (System.Byte operationCode, ExitGames.Client.Photon.ParameterDictionary operationParameters, ExitGames.Client.Photon.SendOptions sendOptions) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/PhotonPeer.cs:1863)
Photon.Realtime.LoadBalancingPeer.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) (at Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs:971)
Photon.Realtime.LoadBalancingClient.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) (at Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs:2185)
Photon.Pun.PhotonNetwork.RaiseEventInternal (System.Byte eventCode, System.Object eventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs:2351)
Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, Photon.Realtime.Player player, System.Boolean encrypt, System.Object[] parameters) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs:1263)
Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, System.Boolean encrypt, System.Object[] parameters) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs:2940)
Photon.Pun.PhotonView.RPC (System.String methodName, Photon.Pun.RpcTarget target, System.Object[] parameters) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs:604)
Player.FixedUpdate () (at Assets/Scripts/Player.cs:34)

Судя по первой строчке PunRPC не поддерживает SpriteRenderer. Как мне передать SpriteRenderer в PunRPC функцию? Вот код который я использовал для запуска функции:

photonView.RPC("changeSprite", RpcTarget.All, PlayerPrefs.GetString("Skin"), PlayerPrefs.GetString("Nickname"), rend, text);

Если что rend это SpriteRenderer, а text это TextMesh


Ответы (0 шт):