我有一个多人回合制战略游戏,需要一个游戏经理,控制当前的游戏状态(轮到谁了).这个管理器应该对每个客户端都是通用的,它的状态应该在服务器上同步.
我是这样做的:游戏管理器对象是NetworkBehaviour,它有NetworkIdentity,它不是本地玩家权限,也不是服务器权限.我已经制作了一个自定义的NetworkManager,它在客户端连接上生成游戏管理器,还测试它是否是服务器.这是一个代码:
public override void OnClientConnect(NetworkConnection conn)
{
ClientScene.Ready(conn);
if (NetworkServer.active)
{
var manager = Instantiate(MultiplayerManagerPrefab, Vector3.zero, Quaternion.identity) as GameObject;
var tacticsManager = manager.GetComponent<MultiplayerManagerModel>();
NetworkServer.RegisterHandler(MsgType.AddPlayer, tacticsManager.CreatePlayerOnServer);
NetworkServer.Spawn(manager);
}
ClientScene.AddPlayer(0);
}
Run Code Online (Sandbox Code Playgroud)
当我在服务器上运行它工作正常时,它在客户端上创建一个实例并同步从服务器到客户端的变量.但是当我尝试从客户端运行命令时它会忽略它们,抛出这个警告:
试图在没有权限的情况下发送对象的命令.UnityEngine.Networking.NetworkBehaviour:SendCommandInternal(NetworkWriter,Int32,String)
请注意,此游戏管理器是在任何玩家之前生成的,因为它必须负责产生玩家.我究竟做错了什么?
我进行了一个寻路库.QuickGraph,开放图形库,符合我的所有要求,但我遇到了一个问题.我需要最短路径算法来跳过当前移动代理无法通过的边缘.我想要的是这样的:
Func<SEquatableEdge<VectorD3>, double> cityDistances = delegate(SEquatableEdge<VectorD3> edge)
{
if(edge.IsPassableBy(agent))
return edgeWeight; // Edge is passable, return its weight
else
return -1; // Edge is impassable, return -1, which means, that path finder should skip it
};
Func<VectorD3, double> heuristic = ...;
TryFunc<VectorD3, IEnumerable<SEquatableEdge<VectorD3>>> tryGetPath = graph2.ShortestPathsAStar(cityDistances, heuristic, sourceCity);
Run Code Online (Sandbox Code Playgroud)
我可以想象通过创建图形副本并删除不可通过的边缘来解决这个问题,但这是不必要的浪费计算机资源.请问,我可以提示我如何解决这个问题?或者没有解决方案,我应该更新源?
Greatings!我需要反序列化序列化为json的不同对象的文件.这是结果文件:
{
"Number": 1,
"Description": "Run version with strategy data",
"Context": "NA"
}[
{
"N": 0.0,
"T": 2.0,
"Adc": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
],
"SpltFr": 2.0,
"Acc": 1.0,
"DAcc": 0.0,
"Acc2": 1.0,
"OscFr": 0.5,
"Fltr": 0,
"CmpEr": false,
"ErrPck": 0,
"IndxDiff": 0,
"Pos": 0,
"FastAcc": [],
"GIndx": 0,
"Indx": 0,
"PcTime": "0001-01-01T00:00:00"
},
{
"N": 1.0,
"T": 2.0,
"Adc": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
],
"SpltFr": 2.2999999523162842,
"Acc": 1.0,
"DAcc": 0.0,
"Acc2": 1.0, …Run Code Online (Sandbox Code Playgroud) c# ×3
graph ×1
json ×1
json.net ×1
networking ×1
path-finding ×1
quickgraph ×1
streamreader ×1
unity3d-unet ×1