Repository navigation
Null Reference Exception on RPC #3937
Description
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
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
EmandM commentedon Apr 9, 2026
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.