Pues habiendo conseguido la sincronización de la variable po***tion resulta que se me ha ido al cuerno la función de salvado. Evidentemente, esto es un problema - no de que el código se haya trastocado (comprobado), sino del mismo Network Identity que tiene que llevar la esfera/ciudad que comentaba en el post anterior 'Networking' ( http://www.unityspain.com/topic/35905-networking/ (//<___base_url___>/topic/35905-networking/) ) ; quitando todas las alusiones a la red, el problema desaparece y vuelve a salvar/cargar sin problema
Pensé que podría ser porque no estaba pasando los datos por el servidor, así que incorporé las instrucciones Command y Rpc a los void Save() y Load(), pero tras salvar y ejecutar la función
RpcLoad(), se comporta como si no sucediera nada.
Compruebo el archivo creado y
No se están salvando las variables en el archivo; crea el archivo pero no guarda las variables (diferentes kb en el archivo creado en Application.PersistantDataPath; 0 kb en este momento)
No tengo claro si es que me estoy saltando un paso del tipo dar autoridad al cliente (
NetworkServer.SpawnWithClientAuthority(go, connectionToClient);
en cualquier caso algunos valores que añada posteriormente deberán influir en 'po***tion',
siendo valores locales, asi que imagino que tendré que hacer algo así tarde temprano; no obstante, ignoro si tiene algo que ver en el caso que nos ocupa en este momento); Total, que un poco lío todo esto del networking
El siguiente script es exactamente el mismo que he estado usando antes de aplicar el Network Identity, salvo por las alusiones network añadidas (NetworkBehaviour, Cmd y prefijo en voi+ Rpc y prefijo en void). ¿Alguna idea?
¡¡Mil gracias!!
using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System;
using System.Linq;
using UnityEngine.Networking;
public class GameControl : NetworkBehaviour {
public GameObject [ ] countries;
public static GameControl control;
[Serializable]
public class PlayerCountryData
{
public int po***tion; // Es una [SyncVar] en otro script llamado Country !!!!!!!!
}
public PlayerCountryData pais;
void Awake ()
{
if (control == null)
{
DontDestroyOnLoad (gameObject);
control = this;
}
else if (control != this)
{
Destroy(gameObject);
}
}
// Use this for initialization
void Start ()
{
countries = GameObject.FindGameObjectsWithTag ("Country");
}
void Update () {
}
[Command]
public void CmdSave () // Guardar datos;
{
BinaryFormatter bf = new BinaryFormatter ();
FileStream file = File.Create (Application.