Click or drag to resize

StrixBehaviourRpc Method (String, RpcSuccessEventHandler, FailureEventHandler, Object)

Calls an RPC on the room member who owns the object.

Namespace:  SoftGear.Strix.Unity.Runtime
Assembly:  StrixUnityRuntime (in StrixUnityRuntime.dll) Version: 1.5.0
Syntax
C#
public void Rpc(
	string rpcName,
	RpcSuccessEventHandler successHandler,
	FailureEventHandler failureHandler,
	params Object[] args
)

Parameters

rpcName
Type: SystemString
RPC method name.
successHandler
Type: SoftGear.Strix.Unity.Runtime.EventRpcSuccessEventHandler
This handler is called when the RPC has been processed successfully.
failureHandler
Type: SoftGear.Strix.Unity.Runtime.EventFailureEventHandler
This handler is called in case there was an error when processing the RPC.
args
Type: SystemObject
A list of method arguments. This should match the arguments in the method definition, both in number and respective types.
Remarks
The method has to be defined on the same class and marked with StrixRpcAttribute attribute. Target member must be in the same match room as you.

Possible error codes:
RequestTimeoutServer did not respond within the specified timeout interval.
NotRoomMemberYou're trying to send an RPC message while not being joined to a room.
ConnectionErrorFailed to send the request because of a connection error.
ReplicaNotSynchronizedThe object is not being synchronized over the network.
Examples
using SoftGear.Strix.Unity.Runtime;
using UnityEngine;
using UnityEngine.UI;

public class StrixRpcExample : StrixBehaviour
{
    [StrixSyncField]
    public int Health = 100;
    public Image HealthBar;

    private void OnMouseDown()
    {
        Rpc("Hit", error => Debug.LogError("Could not call RPC:" + error.cause), Random.Range(3, 8));
    }

    [StrixRpc(ProcedureCode = 1)]
    public void Hit(int damage)
    {
        Health = Mathf.Max(0, Health - damage);
    }

    public void Update()
    {
        HealthBar.fillAmount = Health / 100f;
    }
}
See Also