Skip to content

Null Reference Exception on RPC #3937

Closed

Description

@Magman3000

Description

A clear and concise description of what the bug is.

Reproduce Steps

Scene Control
Gets called when players join.

[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
	public void AddPlayer_ServerRpc(NetworkBehaviourReference playRef)
	{
		Debug.Log("Add");
		if(!active.Value)
		{
			Debug.Log("Active");
			netUI.Init();
			active.Value = true;
		}
		if (playRef.TryGet(out PlayerController player))
        {
			player.FinishSetup_ServerRpc(playerScores.Value.Count);
        }
		netUI.AddName_ServerRpc(chat.GetName(playerScores.Value.Count));
		Debug.Log("Net");
	    playerScores.Value.Add(0);
	}
	[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
    public void ChangeScore_ServerRpc(int score, int index)
    {
	    playerScores.Value[index] = score;
	    netUI.UpdateScore_ClientRpc(index, score);
    }

Damage
gets called when a bullet hits.

[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
    public void Damage_ServerRpc(float damage, int attacker)
    {
        HP.Value -= damage;
        if (HP.Value <= 0 && IsOwner) 
		{
			sceneControl.Death(attacker);
			HP.Value = maxHP;
		}
        Vector3 temp = healthBar.transform.localScale;
        temp.x = HP.Value/maxHP;
        healthBar.transform.localScale = temp;
        if (temp.x > 0.5) healthBar.GetComponent<Renderer>().material.color = Color.green;
        else if (temp.x < 0.5 && temp.x > 0.25) healthBar.GetComponent<Renderer>().material.color = Color.yellow;
        else healthBar.GetComponent<Renderer>().material.color = Color.red;
    }

Actual Outcome

RPC Called on Client

Scene Control

NullReferenceException: Object reference not set to an instance of an object
Unity.Netcode.NetworkBehaviour.__endSendRpc (Unity.Netcode.FastBufferWriter& bufferWriter, System.UInt32 rpcMethodId, Unity.Netcode.RpcParams rpcParams, Unity.Netcode.RpcAttribute+RpcAttributeParams attributeParams, Unity.Netcode.SendTo defaultTarget, Unity.Netcode.RpcDelivery rpcDelivery) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkBehaviour.cs:354)
SceneControl.AddPlayer_ServerRpc (Unity.Netcode.NetworkBehaviourReference playRef) (at Assets/Scripts/GameState/SceneControl.cs:28)
SceneControl.AddPlayer (PlayerController player) (at Assets/Scripts/GameState/SceneControl.cs:22)
PlayerController.OnEnable () (at Assets/Scripts/Player/PlayerController.cs:38)
UnityEngine.Behaviour:set_enabled(Boolean)
Enabler:Enable(Int32) (at Assets/Scripts/Player/Enabler.cs:40)
Enabler:OnNetworkSessionSynchronized() (at Assets/Scripts/Player/Enabler.cs:31)
Unity.Netcode.NetworkBehaviour:NetworkSessionSynchronized() (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkBehaviour.cs:853)
Unity.Netcode.NetworkObject:InternalNetworkSessionSynchronized() (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkObject.cs:2574)
Unity.Netcode.NetworkSpawnManager:NotifyNetworkObjectsSynchronized() (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Spawning/NetworkSpawnManager.cs:2182)
Unity.Netcode.NetworkSceneManager:HandleClientSceneEvent(UInt32) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/SceneManagement/NetworkSceneManager.cs:2396)
Unity.Netcode.NetworkSceneManager:ClientLoadedSynchronization(UInt32) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/SceneManagement/NetworkSceneManager.cs:2224)
Unity.Netcode.NetworkSceneManager:OnClientBeginSync(UInt32) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/SceneManagement/NetworkSceneManager.cs:2155)
Unity.Netcode.NetworkSceneManager:HandleClientSceneEvent(UInt32) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/SceneManagement/NetworkSceneManager.cs:2311)
Unity.Netcode.NetworkSceneManager:HandleSceneEvent(UInt64, FastBufferReader) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/SceneManagement/NetworkSceneManager.cs:2656)
Unity.Netcode.SceneEventMessage:Handle(NetworkContext&) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/Messages/SceneEventMessage.cs:29)
Unity.Netcode.NetworkMessageManager:ReceiveMessage(FastBufferReader, NetworkContext&, NetworkMessageManager) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/NetworkMessageManager.cs:568)
Unity.Netcode.NetworkMessageManager:HandleMessage(NetworkMessageHeader&, FastBufferReader, UInt64, Single, Int32) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/NetworkMessageManager.cs:422)
Unity.Netcode.NetworkMessageManager:ProcessIncomingMessageQueue() (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/NetworkMessageManager.cs:448)
Unity.Netcode.NetworkManager:NetworkUpdate(NetworkUpdateStage) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkManager.cs:349)
Unity.Netcode.NetworkUpdateLoop:RunNetworkUpdateStage(NetworkUpdateStage) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkUpdateLoop.cs:191)
Unity.Netcode.<>c:b__0_0() (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkUpdateLoop.cs:214)

Damage

ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
System.Collections.Generic.List`1[T].set_Item (System.Int32 index, T value) (at <59bd7c40c082431db25e1e728ab62789>:0)
NetUI.UpdateScore_ClientRpc (System.Int32 i, System.Int32 score) (at Assets/Scripts/Networking/NetUI.cs:44)
NetUI.__rpc_handler_3041977728 (Unity.Netcode.NetworkBehaviour target, Unity.Netcode.FastBufferReader reader, Unity.Netcode.__RpcParams rpcParams) (at <089320a6870740c387768579c22c6808>:0)
Unity.Netcode.RpcMessageHelpers.Handle (Unity.Netcode.NetworkContext& context, Unity.Netcode.RpcMetadata& metadata, Unity.Netcode.FastBufferReader& payload, Unity.Netcode.__RpcParams& rpcParams) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/Messages/RpcMessages.cs:79)
Rethrow as Exception: Unhandled RPC exception!
UnityEngine.Debug:LogException(Exception)
Unity.Netcode.RpcMessageHelpers:Handle(NetworkContext&, RpcMetadata&, FastBufferReader&, __RpcParams&) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/Messages/RpcMessages.cs:83)
Unity.Netcode.RpcMessage:Handle(NetworkContext&) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/Messages/RpcMessages.cs:223)
Unity.Netcode.NetworkMessageManager:ReceiveMessage(FastBufferReader, NetworkContext&, NetworkMessageManager) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/NetworkMessageManager.cs:568)
Unity.Netcode.NetworkMessageManager:HandleMessage(NetworkMessageHeader&, FastBufferReader, UInt64, Single, Int32) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/NetworkMessageManager.cs:422)
Unity.Netcode.NetworkMessageManager:ProcessIncomingMessageQueue() (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Messaging/NetworkMessageManager.cs:448)
Unity.Netcode.NetworkManager:NetworkUpdate(NetworkUpdateStage) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkManager.cs:349)
Unity.Netcode.NetworkUpdateLoop:RunNetworkUpdateStage(NetworkUpdateStage) (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkUpdateLoop.cs:191)
Unity.Netcode.<>c:b__0_0() (at ./Library/PackageCache/com.unity.netcode.gameobjects@c690afa8ab6e/Runtime/Core/NetworkUpdateLoop.cs:214)

Expected Outcome

RPC gets called

Screenshots

Image Image

Environment

  • OS: [Windows]
  • Unity Version: [e.g. 6000.2.3f1]
  • Netcode Version: [2.10.0 ]
  • Netcode Commit: [e.g. https://github.com/Unity Technologies/com.unity.netcode.gameobjects/commit/ba418fa5b600ad9eb61fab0575f12fbecc2c6520]
  • Netcode Topology: [Default Unity Transport, ]

Activity

  1. EmandM commented on Apr 9, 2026

    @EmandM
    Member

    The Scene Control Null reference exception was fixed in #3915 and will be in the next NGO release. As per #3896 and #3897, the cause is trying to call an RPC on an un-spawned NetworkBehaviour. The fix will make the error message clearer.

    The Damage exception is thrown from within the code of your RPC. If you need help to find the issue in your code you will need to ask the community in Unity Discussions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions