Unity自5.1以后支持新版的网络系统Unet,Unet是什么,优缺点是什么,和以前的网络系统有什么区别,请自行去百度。本篇要实现的功能是创建网络游戏的Player主角,以及实现移动同步。本教程来源于爱奇艺上的Unet教程,由于是英文视频,so对于很多人来说......,所以就准备出一些对应的中文教程,来帮助初学者(偶也是初学者,若是分享的技术有误,还望指出)。废话不多说了,进入正题。
    一 首先创建一个空对象,名字为NetworkManager,为其添加组件Network Manager HUD和Network Manager。
此处插入对这二个组件的介绍
NetworkManager是一个组件,用来管理网络多人游戏的状态。它实际上是完全使用HLAPI实现,所以它所做的一切程序员可以使用其他方式实现。然而,NetworkManager封装好了很多有用的功能到一个地方,使创建、运行和调试多人游戏尽可能简单。NetworkManager可以使用使其完全没有脚本。在编辑器的检视面板,允许配置它的所有特性。NetworkManagerHUD供应一个简单的、默认的用户界面,允许网络游戏在运行时由用户控制。更先进的用法,开发人员可以从派生一个类继承自NetworkManager,并且自定义其行为通过重写任何它所提供的虚拟函数。
    二 创建主角,我在这里创建一个Cube作为主角player,首先player是一个网络物体,所以我们要先要为其添加Network Identity 组件,标识网络身份。并且勾选Local Player Authority,授权本地玩家。再为其添加脚本名为PlayerController,来控制人物的移动,代码如下:
三. 将Hierarchy面板中的Cube,拖入Project面板中作为一个预设体,并且删去Hierarchy面板中的Cube,将预设体Cube拖入Network Manager 中Player Prefab的位置,如图所示:
 
四. 现在开启二个运行程序,一个作为LAN Host(主机),一个作为LAN Client(客户端)
/
五 . 到这一步为主,大家可以自己控制自己创建出来的游戏主角了,然而问题是移动之后并没有进行位置同步,你在本地进行移动,并不能同步给其余客户端。如何解决这个问题呢?最简单的就是在Cube主角身上添加Network Transform组件,并且设置Transform Sync Mode 为 Sync Transform。如图所示:
六 . 现在已经实现了,创建主角并且实现同步的功能,不过我们玩点不一样的,我们不使用Network Transfrom 组件来进行位置同步,我们自己写脚本来实现位置同步,首先先去掉Network Transform组件,为Cube添加脚本名为SynMove。代码如下:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class SynMove : NetworkBehaviour {
//当 SyncVar 发生改变时,UNet 会从 Server 端向所有有效的 Client 端发送这些改变。注意这里的方向,是从 Server 到 Client ,而不是从 Client 到 Server 的方向。
[SyncVar]
private Vector3 synPos;
[SerializeField]Transform myTransform;
[SerializeField]float lerpRate = ; // Update is called once per frame
void FixedUpdate () {
TransmitPosition ();
LerpPosition (); }
void LerpPosition(){
//不是本地玩家
if (!isLocalPlayer) {
//非本地玩家的位置进行更新
myTransform.position = Vector3.Lerp (myTransform.position,synPos,Time.deltaTime*lerpRate);
}
}
[Command]
//命令, 在客户端调用,但是在服务端运行,这是方法必须以 Cmd 开头
void CmdProvidePositionToServer(Vector3 pos){
//在服务器上为synPos 同步变量赋值
synPos = pos;
}
[ClientCallback]
//只在客户端调用
void TransmitPosition(){
//是本地玩家
if (isLocalPlayer) {
//就把本地玩家的位置传给服务器
CmdProvidePositionToServer (myTransform.position);
}
}
}

SynMove

七 . 在Inspector面板中,将Cube主角拖入到 My Transform中,如图所示:

点击查看原文

unity之局域网的更多相关文章

  1. 【一天一个小知识10/20】Unity通过www获取json文本信息。

    前提:领导要我在unity获取局域网服务器的文本信息.给了一个json的网络文本让我测试.我对于json以及服务器比较陌生.就直接去网上找相关的资料. 以下是自己测试的代码,没问题. 测试的网络jso ...

  2. 项目Beta冲刺(团队)--2/7

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺 团队名称:葫芦娃队 作业目标:进行新一轮的项目冲刺,尽力完成并完善项目 团队博客 队员学号 队员昵称 博客地址 04160242 ...

  3. 项目Beta冲刺(团队) --1/7

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺) 团队名称:葫芦娃队 作业目标:尽力完成 团队博客 队员学号 队员昵称 博客地址 041602421 der himmel ht ...

  4. 关于Unity的网络框架

    注:Unity 5.1里引入了新的网络框架,未来目标应该是WOW那样的,现在还只是个P2P的架子. 网络的框架,无非是如何管理网络数据的收发,通信双方如何约定协议.之前做的框架与GameObject无 ...

  5. Unity连Photon服务器入门详解

    Photon是目前比较好用的游戏服务器.目前网上对于Photon的服务器讲解比较少,最近也对Photon做了初步的了解,做一个极其详细的入门. 首先就是得下载Photon咯 https://www.p ...

  6. Unity Networking API文档翻译(二):The High Level API

    高级API (HLAPI) 是用来提供给Unity 创建多人在线游戏的组件.它是在底层传输层的基础上构建的, 对多人在线游戏提供了很多通用的功能.当传输层支持各种网络拓扑结构的时候,HLAPI是一个功 ...

  7. Unity Networking API文档翻译(一):Networking概述

    写在翻译前的话:      我使用过Photon,研究过Ulink这些Unity提供的多人在线游戏服务器组件,这些商业组件虽然很好很强大.但是对于一个独立开发者来说,4000多软妹币还是点多.总想找一 ...

  8. Unity 3D 连接Mysql数据库

    要想使用Unity直接连接数据库需要以下几个动态库

  9. Unity塔防游戏开发

    Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...

随机推荐

  1. linux初学者-用户管理篇

    linux的用户管理是非常以后工作中重要的一部分,也是linux系统安全的防线. 1.用户理解 那么到底什么是用户呢?用户就是系统使用者的身份. 用户是以怎样的方式储存在计算机中的呢?在系统中用户存储 ...

  2. java练习---10

    package cn.zrjh; public class L { public int id; public String name; public int age; public String c ...

  3. jQuery入门一(jQuery下载以及基本语法)

    1. jQuery简介 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是 ...

  4. python基础——元组(tuple)

    Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. tuple1 = () tuple2 = ...

  5. ubuntu防火墙规则之ufw

    前言 因公司项目的需求,需要对客户端机器简便使用防火墙的功能,所以可在页面进行简便设置防护墙规则,当然,这个功能需求放到我手上我才有机会学到.因为客户端机器都是ubuntu的,所以当然用了ubuntu ...

  6. 腾讯位置服务API快速入门

    前言 之前项目有个需求,在网页上显示微信发送过来的位置信息,该开始想用百度地图,后来发现腾讯地图相对简单一点 快速入门 申请Key https://lbs.qq.com/guides/startup. ...

  7. 蓝桥杯 2n皇后问题 深搜

    默认大家会了n皇后问题 基础练习 2n皇后问题   时间限制:1.0s   内存限制:512.0MB     问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和 ...

  8. python基础之条件控制

    行与缩进 python使用缩进来表示代码块,不需要使用大括号 {} ,同一个代码块的语句必须包含相同的缩进空格数. 条件控制 #条件控制语法: if 条件: 代码块 elif 条件: 代码块 else ...

  9. Android活动(Activity)创建及生命周期

       Activity是Android的门面,可以与用户进行互动的重要模块,凡是在应用中可以看到的东西,都是放在活动中的.   在学习新的技术时,我喜欢将需要学习的技术与自己懂得技术进行类似比较,而活 ...

  10. kali Metasploit 连接 Postgresql 默认密码

    使用 metasploit 时, 1. 启动 postgresql service postgresql start 2. 自行测试 postgresql 是否安装成功 根据需要,自行 修改 post ...