Unity5之Network基础用法之人物跑动同步

接下来写unity之Network系列文章。本文从最基本的讲起。依然用案例操作的方式来讲解。


案例目标:使用Network功能实现两个客户端中的两个人物在同一个场景走动可以互相看到。

步骤1:

新建一个场景,场景中包括相机(命名为KKCAM)、一个plane、3个cube(命名为enviorment)、一个空物体(命名为Network)、一个第一人称角色控制器(命名为PLAYER)。
如下图:
Unity5之Network基础用法之人物跑动同步 


步骤2:

给PLAYER添加Network Identity组件和Network Transform组件。
Network Identity组件用来给该物体添加ID,Network Transform组件是为了我们人物的移动而添加的。所以在Transform SyncMode的选项下修改成“Sync Transform”。
如下图:
Unity5之Network基础用法之人物跑动同步 



步骤3:

给Network上添加组件Network Manager和Network Manager HUD组件。

Network Manager负责管理Network的 通讯,Network Manager HUD组件用来显示运行时的关于Network的UI。
将PLAYER作出一个预制物体,然后放到Spawn info下的playerprefab内。如下图:

Unity5之Network基础用法之人物跑动同步 


步骤4:

给PLAYER添加脚本playernetwork。
该脚本的作用就是客户端只可以控制自己客户端的角色。
注意:PLAYER上的CharacterController,FirstPersonController组件以及其子物体FirstPersonCharacter上的相机组件都是默认为关闭。
如图:
Unity5之Network基础用法之人物跑动同步 

代码;
[C#] 纯文本查看 复制代码
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
 
 
public class playernetwork : NetworkBehaviour
{
 
    [SerializeField]
    Camera fpscamera;
    [SerializeField]
    AudioListener audioplayer;
 
    // Use this for initialization
    void Start()
    {
        if (isLocalPlayer)//只有本客户端的角色才会执行
 
        {
            GameObject.Find("KKCAM").SetActive(false);//关闭掉场景中的相机使用角色控制器中的自己带的相ua
            GetComponent<CharacterController>().enabled = true;
            GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = true;
 
            fpscamera.enabled = true;
            audioplayer.enabled = true;
 
        }
    }
 
    // Update is called once per frame
    void Update()
    {
 
    }
}



注意:PLAYER作为预制物体要点Apply


步骤5:然后打包运行,需要启动两个exe,第一个启动后选择LAN host选项做为服务器选项,第二个启动后点击LAN Client选项作为客户端。如下图:

Unity5之Network基础用法之人物跑动同步 



运行效果:动态图
Unity5之Network基础用法之人物跑动同步