TNet Tasharen Networking是什么插件
TNet Tasharen Networking插件可用于轻量级多人网络游戏的网络功能开发。本文将详细介绍该插件,并给出一个简单示例的实现过程。
功能说明
每启动一次程序,会自动创建一个角色。玩家通过鼠标点击可控制角色移动,多个客户端能够同时控制各自的角色移动,并且可以看到其他角色的移动情况。
实现过程
1. 项目准备
- 创建项目TNetDemo。
- 导入TNet Tasharen Networking 2.0.3.unitypackage。
- 解压
TNetDemo\Assets\TNet\TNetServer.zip中的TNServer.exe,并运行。
2. 场景设置
场景创建
- 创建场景start,在该场景中创建一个空物体GameManager,并为其添加脚本TNManager、TNAutoJoin。
- 创建场景game,在该场景中添加一个cube作为Ground,添加一个capsule作为Player,以此作为游戏场景。
- 创建场景disconnet,在该场景中添加text,作为无法连接网络时的显示场景。
场景添加
将start、game、disconnet这三个场景添加到File - Build Settings - Scenes In Build中。
场景属性设置
打开start场景,在GameManager的TNAutoJoin脚本中,将First Level和DisconnetLevel属性分别设置为game和disconnet。当有网络连接时,运行start场景将进入game场景;若无网络连接,则进入Disconnect场景。
3. 游戏功能实现
(1)获取鼠标点击坐标
打开game场景,在MainCamera上添加TouchHandler脚本,该脚本用于获取鼠标点击在屏幕上的世界坐标,从而控制Player的移动。
(2)添加TNObject脚本
在Player上添加TNObject脚本。
(3)创建PlayerMove脚本
为Player创建PlayerMove脚本,用于控制Player的移动,代码如下:
using UnityEngine;
using System.Collections;
using TNet;
public class PlayerMove : TNBehaviour {
public static PlayerMove Instance;
/// <summary>
/// 目标位置
/// </summary>
private Vector3 _target;
public Vector3 Target
{
set
{
tno.Send("OnSetTarget", TNet.Target.AllSaved, value);
}
}
/// <summary>
/// 移动速度
/// </summary>
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;
}
/// <summary>
/// 有新角色加入时,初始化已有角色的位置
/// </summary>
/// <param name="p"></param>
void OnNetworkPlayerJoin(Player p)
{
tno.Send("OnSetTargetImmediate", TNet.Target.AllSaved, transform.position);
}
[RFC]
void OnSetTargetImmediate(Vector3 v)
{
this.transform.position = v;
}
}
需要注意的是,Player的父类是TNBehaviour。
(4)创建Ground脚本
为Ground创建Ground脚本,实现通过鼠标点击控制Player移动的功能,代码如下:
using UnityEngine;
using System.Collections;
public class Ground : MonoBehaviour
{
void OnClick()
{
PlayerMove.Instance.Target = TouchHandler.worldPos;
}
}
(5)制作Player预制体
将Player做成Prefab,然后删除game场景中的Player。
(6)添加TNAutoCreate脚本
创建一个空对象,为其添加TNAutoCreate脚本,并将Prefab设置为Player。
4. 最终设置
打开start场景,将Player的Prefab添加到GameManager的TNManager脚本中的Objects中。至此,整个设置完成。可以发布一个exe运行起来,同时在Unity中运行游戏,即可看到效果。
资源下载
- TNet Tasharen Networking插件下载地址:http://yunpan.cn/cKHf43HQKYbRb(提取码 ed53)
- TNetDemo源码地址:http://git.oschina.net/darcy_d/unity_TNetDemo
- TNet Tasharen Networking视频教程:https://www.taikr.com/course/161