public override void OnReceiveData(ref NetworkState.NETWORK_STATE_TYPE state) { _operationList.Clear(); int opCount = BufferedNetworkUtilsClient.ReadInt(ref state); for (int i = 0; i < opCount; ++i) { FduParticleSystemOP.Operation operationType = (FduParticleSystemOP.Operation)BufferedNetworkUtilsClient.ReadByte(ref state); int paraCount = BufferedNetworkUtilsClient.ReadInt(ref state); FduParticleSystemOP op = new FduParticleSystemOP(); op.operation = operationType; if (paraCount > 0) { op.paras = new object[paraCount]; } for (int j = 0; j < paraCount; ++j) { op.paras[j] = FduSupportClass.deserializeOneParameter(ref state); } _operationList.Add(op); } //反序列化结束 执行每一项粒子系统的操作 foreach (FduParticleSystemOP op in _operationList) { op.executeOpOnSlave(particleSys); } _operationList.Clear(); }
internal void DeserializeParameterData(ref NetworkState.NETWORK_STATE_TYPE state) { _CommandName = BufferedNetworkUtilsClient.ReadString(ref state); //Name of Command int parameterCount = BufferedNetworkUtilsClient.ReadInt(ref state); //Count of Command parameters for (int j = 0; j < parameterCount; ++j) { string paraName = BufferedNetworkUtilsClient.ReadString(ref state); //Name of parameter object para = FduSupportClass.deserializeOneParameter(ref state); //Value of parameter addParameter(paraName, para); } }
//接收到rpc事件中的数据 反序列化为可用的事件实例 void deserializeParameters(ref NetworkState.NETWORK_STATE_TYPE state) { _rpcData.Clear(); _rpcData.Add((byte)0, BufferedNetworkUtilsClient.ReadInt(ref state)); _rpcData.Add((byte)1, BufferedNetworkUtilsClient.ReadString(ref state)); int paraCount = BufferedNetworkUtilsClient.ReadInt(ref state); _rpcData.Add((byte)2, paraCount); object[] parameters = new object[paraCount]; try { for (int i = 0; i < paraCount; ++i) { object ob = FduSupportClass.deserializeOneParameter(ref state); parameters[i] = ob; } } catch (InvalidSendableDataException e) { Debug.LogError(e.Message); return; } _rpcData.Add((byte)3, (object[])parameters); }