SyncVar Hooks
using UnityEngine;
using Mirror;
public class PlayerController : NetworkBehaviour
{
[SyncVar(hook = nameof(OnColorChanged))]
Color playerColor = Color.black;
// Unity makes a clone of the Material every time GetComponent().material is used.
// Cache it here and Destroy it in OnDestroy to prevent a memory leak.
Material cachedMaterial;
public override void OnStartServer()
{
playerColor = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);
}
void OnColorChanged(Color oldColor, Color newColor)
{
if (cachedMaterial == null)
cachedMaterial = GetComponent().material;
cachedMaterial.color = newColor;
}
void OnDestroy()
{
Destroy(cachedMaterial);
}
}Hook call order
Last updated