unet 学习笔记 (一)

来源:互联网 发布:dts播放器 for mac 编辑:程序博客网 时间:2024/06/16 13:10
1.加入network manager 组件


创建一个空物体,添加network manager 组件 


添加完毕,这个时候去运行,并没有什么卵用.


可以再给这个物体 添加network manager HUD 组件


这个时候运行游戏,就会看到四个选项.
================================================


LAN HOST(H)  -- 作为服务端和客服端
 
LAN Client -- 链接服务器


LAN Server Only -- 仅做为服务器.


Enable Match Maker 


================================================


这个时候打包一个,u3d跑一个,就可以模拟客户端去链接服务端了.


--------------------------------------------------


2 连接一个客户端创建一个游戏主角


给游戏人物添加组件 network identity 组件.添加至预制体.


找到刚才那个空物体下面的network manager 组件下面的 Spawn info的player prefab ,将人物的预


制体拖给他即可!


========测试:新打一个包,在链接服务器,就会生成刚才的预制体了.=================
控制主角生成的位置:可以新建一个空物体,给其添加组件 NetworkstartPosition,
控制好此空物体的地点即可! 也可以选择随机的地点或者以此的地点,这个控制在network manager 
下面的play spawn met这个下拉框这里.


--------------------------------------------------------------------
3.各自控制自己本地的任务角色
找到控制角色移动的脚本.修改他的父类为 NetworkBehaviour (需引入命名空间 using 


UnityEngine.Networking;)
然后有个isLocalPlayer 属性来判断是否是本地角色




---------------------------------------------------------------
4.同步各个客户端的角色位置信息.
 给角色的添加 network Transform 组件即可
可以调下同步频率等信息


---------------------------------------------------------------------
5.处理本地的人物角色和别的客户端不同


在 NetWorkBehaviour 里头有个方法OnStartLocalPlayer ,重写此方法即可,该方法只会是本地的就


执行,别的地方不执行此方法.且只会执行一次


---------------------------------------------------------------------
6. 处理 非人物物体的同步 ,比如:子弹
在这些生成非人物物体 的方法上面加上[Command] 然后修改此方法名称以Cmd开头,然后 在生成后加


上这一句话 NetworkServer.Spawn(GameObject);
当然这样生成的物体的运动还是不会在客户端上面更新,需要给它加上network identity和network 


Transform  然后添加进网络组建的prefab中去.


[Command] 只在服务器端调用
---------------------------------------------------------------------
7.同步类中成员变量
在类中定义成员变量的地方加  [SyncVar]
如:
[SyncVar]
public float a;
如果需要在同步后执行,可以这样 [SyncVar(hook = "方法名称")]
他会再该参数被修改后进行回调此方法的操作.
---------------------------------------------------------------------


8.一般这种碰撞,减少血量...等等操作,在服务器计算即可,然后同步相关数据到客户端.
isServer 判断是不是服务器 ,是服务器就执行碰撞等等...
如: if(isServer)......


---------------------------------------------------------------------
9.ClientRpc 
[ClientRpc] 客户端远程调用.
列如:当角色设置了只能在本地控制移动,当死亡后角色需要原点复活的时候,需要使用此
注意:添加了后,方法名称得以Rpc开头.




---------------------------------------------------------------------
10.在服务器启动的时候执行,可以重写 OnStartServer 方法,当然这个得继承networkb...类


---------------------------------------------------------------------


---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------










 
0 0
原创粉丝点击