Как передавать 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