今天主要学习了角色在局域网中的控制,怎样把角色同步到其他客户端然后各自控制自己的角色互不影响.使用RPC调用角色控制.
需要注意的是:
1. // go.GetComponent<Player>().SetOwnerPlayer(Network.player);//这个代码只设置了当前创建者中的战士的ownerPlayer属性在其他客户端这个属性是空的;
2. go.networkView.RPC(“SetOwnerPlayer”, RPCMode.AllBuffered, Network.player);//远程调用;使用这个远程调用
在 SetOwnerPlayer方法上面必须声明是[RPC];否则会出错.如下:
[RPC]//使用注解表示这个方法是一个远程调用;
public void SetOwnerPlayer(NetworkPlayer player)
{
this.ownerPlayer = player;
if (Network.player!=this.ownerPlayer)
{
LoseControl();
Debug.Log(“失去控制”);
}
}
3.需要同步的数据都需要使用RPC远程调用实现.
4.在需要获取同步角色中自身组件的函数中一定要把函数放在RPC远程调用函数中执行才有用这样执行的才是调用自身的那个.
如:需要在每个角色中获取
motor=this.GetComponent<CharacterMotor>();
则需要把motor=this.GetComponent<CharacterMotor>();放在 SetOwnerPlayer函数里面调用才行.
今天最终的效果还是没有调试出来,不知道是我的原因还是版本的原因,反正客户端和服务器端的动画还无法同步出来死亡伤害也无法实现,
只能明天再调试一下了.