接下来写unity之Network系列文章。本文从最基本的讲起。依然用案例操作的方式来讲解。
案例目标:使用Network功能实现两个客户端中的两个人物在同一个场景走动可以互相看到。
步骤1:
新建一个场景,场景中包括相机(命名为KKCAM)、一个plane、3个cube(命名为enviorment)、一个空物体(命名为Network)、一个第一人称角色控制器(命名为PLAYER)。
如下图:
步骤2:
给PLAYER添加Network Identity组件和Network Transform组件。
Network Identity组件用来给该物体添加ID,Network Transform组件是为了我们人物的移动而添加的。所以在Transform SyncMode的选项下修改成“Sync Transform”。
如下图:
步骤3:
给Network上添加组件Network Manager和Network Manager HUD组件。
Network Manager负责管理Network的 通讯,Network Manager HUD组件用来显示运行时的关于Network的UI。
将PLAYER作出一个预制物体,然后放到Spawn info下的playerprefab内。如下图:
步骤4:
给PLAYER添加脚本playernetwork。
该脚本的作用就是客户端只可以控制自己客户端的角色。
注意:PLAYER上的CharacterController,FirstPersonController组件以及其子物体FirstPersonCharacter上的相机组件都是默认为关闭。
如图:
代码;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class playernetwork : NetworkBehaviour
{
[SerializeField]
Camera fpscamera;
[SerializeField]
AudioListener audioplayer;
void Start()
{
if(isLocalPlayer)
{
GameObject.Find("KKCAM" ).SetActive( false );
//关闭掉场景中的相机使用角色控制器中的自己带的相机
GetComponent<CharacterController>().enabled = true;
GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled =true;
fpscamera.enabled = true;
audioplayer.enabled = true;
}
}
}
注意:PLAYER作为预制物体要点Apply
步骤5:然后打包运行,需要启动两个exe,第一个启动后选择LAN host选项做为服务器选项,第二个启动后点击LAN Client选项作为客户端。如下图:
运行效果:动态图