tnet tasharen networking简介

2015年01月30日 11:34 0 点赞 0 评论 更新于 2025-11-21 15:15

TNet Tasharen Networking插件可用于轻量级多人网络游戏的网络功能开发。本文将详细介绍该插件的功能,并逐步阐述其实现过程。

功能说明

每次启动程序时,会自动创建一个角色。玩家通过鼠标点击能够控制角色移动,多个客户端可以同时控制各自的角色移动,并且能看到其他角色的移动情况。

实现过程

1. 项目准备

  • 创建项目TNetDemo,并导入TNet Tasharen Networking 2.0.3.unitypackage。
  • 解压TNetDemo\Assets\TNet\TNetServer.zip中的TNServer.exe,并运行该程序。

2. 场景与脚本设置

2.1 创建场景并添加脚本

  • 创建场景start,在该场景中创建一个空物体GameManager,并为其添加脚本TNManagerTNAutoJoin
  • 创建场景game,在该场景中添加cube作为地面(Ground),添加capsule作为玩家(Player),以此作为游戏场景。
  • 创建场景disconnet,在该场景中添加text,用于在无法连接网络时显示。
  • startgamedisconnet三个场景添加到File - Build Settings - Scenes In Build中。

2.2 场景属性设置

打开start场景,在GameManagerTNAutoJoin脚本中,将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; ///

/// 目标位置 /// private Vector3 _target; public Vector3 Target { set { tno.Send("OnSetTarget", TNet.Target.AllSaved, value); } } /// /// 移动速度 /// public float Speed = 5f;

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; }

///

/// 有新角色加入时,初始化已有角色的位置 /// /// void OnNetworkPlayerJoin(Player p) { tno.Send("OnSetTargetImmediate", TNet.Target.AllSaved, transform.position); }

[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)

作者信息

feifeila

feifeila

共发布了 3994 篇文章