tnet tasharen networking简介
TNet Tasharen Networking插件可用于轻量级多人网络游戏的网络功能开发。本文将详细介绍该插件的功能,并逐步阐述其实现过程。
功能说明
每次启动程序时,会自动创建一个角色。玩家通过鼠标点击能够控制角色移动,多个客户端可以同时控制各自的角色移动,并且能看到其他角色的移动情况。
实现过程
1. 项目准备
- 创建项目TNetDemo,并导入TNet Tasharen Networking 2.0.3.unitypackage。
- 解压
TNetDemo\Assets\TNet\TNetServer.zip中的TNServer.exe,并运行该程序。
2. 场景与脚本设置
2.1 创建场景并添加脚本
- 创建场景
start,在该场景中创建一个空物体GameManager,并为其添加脚本TNManager和TNAutoJoin。 - 创建场景
game,在该场景中添加cube作为地面(Ground),添加capsule作为玩家(Player),以此作为游戏场景。 - 创建场景
disconnet,在该场景中添加text,用于在无法连接网络时显示。 - 将
start、game、disconnet三个场景添加到File - Build Settings - Scenes In Build中。
2.2 场景属性设置
打开start场景,在GameManager的TNAutoJoin脚本中,将First Level属性设置为game,将DisconnetLevel属性设置为disconnet。这样,当有网络连接时,运行start场景将进入game场景;若无网络连接,则进入Disconnect场景。
3. 游戏功能实现
3.1 鼠标点击控制
- 打开
game场景,在MainCamera上添加TouchHandler脚本,该脚本用于获取鼠标点击在屏幕上的世界坐标,从而控制Player的移动。
3.2 玩家脚本设置
- 在
Player上添加TNObject脚本。 - 为
Player创建PlayerMove脚本,用于控制Player的移动,具体代码如下:using UnityEngine; using System.Collections; using TNet;
public class PlayerMove : TNBehaviour {
public static PlayerMove Instance;
///
void Awake() { // 只能操作自己实例化的Player if (TNManager.isThisMyObject) { PlayerMove.Instance = this; } }
void Update() { this.transform.position = Vector3.Lerp(this.transform.position, this._target, Time.deltaTime * Speed); }
[RFC] void OnSetTarget(Vector3 v) { this._target = v; }
///
[RFC] void OnSetTargetImmediate(Vector3 v) { this.transform.position = v; } }
需要注意的是,`Player`的父类是`TNBehaviour`。
#### 3.3 地面脚本设置
为`Ground`创建`Ground`脚本,实现通过鼠标点击控制`Player`移动的功能,代码如下:
using UnityEngine; using System.Collections;
public class Ground : MonoBehaviour { void OnClick() { PlayerMove.Instance.Target = TouchHandler.worldPos; } }
#### 3.4 预制体与自动创建设置
- 将`Player`做成预制体(Prefab),并删除`game`场景中的`Player`。
- 创建一个空对象,添加`TNAutoCreate`脚本,将`Prefab`设置为`Player`。
### 4. 最终设置与运行
打开`start`场景,将`Player`的预制体添加到`GameManager`的`TNManager`脚本中的`Objects`中。至此,整个项目设置完成,可以发布一个exe文件并运行,同时在Unity中运行游戏,即可看到效果。
## 资源下载
- TNet Tasharen Networking插件下载地址:[http://yunpan.cn/cKHf43HQKYbRb](http://yunpan.cn/cKHf43HQKYbRb)(提取码 ed53)
- TNetDemo源码地址:[http://git.oschina.net/darcy_d/unity_TNetDemo](http://git.oschina.net/darcy_d/unity_TNetDemo)
- TNet Tasharen Networking视频教程:[https://www.taikr.com/course/161](https://www.taikr.com/course/161)