Instantiate creates gameobject localy. Spawning creates it in the other clients as well. Only the server can destroy or despawn.
GameObject go = Instantiate(myPrefab, Vector3.zero, Quaternion.identity);
go.GetComponent<NetworkObject>().Spawn();
NetworkVariable var = new NetworkVariable(permissions);
//access value
var.Value = newValue;
//setup subscribers
private void OnEnable(){
var.OnValueChanged += subscribedCallback;
}
private void OnEnable()
{
var.OnValueChanged -= subscribedCallback;
}
The server can change the current scene with NetworkSceneManager
//This can only be called on the server
NetworkSceneManager.SwitchScene(mySceneName);