分享

Unity教程之

 鸿蛟家平 2016-04-19

4月 9 2015

Unity教程之-TNet Tasharen Networking插件使用

 

TNet TasharenNetworking插件可用于轻量级多人网络游戏的网络功能的开发。

功能说明:

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

实现过程:

1、创建项目TNetDemo,导入TNetTasharen Networking 2.0.3.unitypackage

2、解压TNetDemo\Assets\TNet\TNetServer.zip中的TNServer.exe,并运行。

3、创建场景start,创建一个空物体GameManager,添加脚本TNManagerTNAutoJoin

4、创建场景game,添加cubeGround,添加capsulePlayer,作为游戏场景。

5、创建场景disconnet,添加text,作为无法连接网络时的显示场景。

6、startgamedisconnet添加到File – Build Settings – Scenes In Build中。

7、打开start场景,在GameManagerTNAutoJoin脚本中设置First LevelDisconnetLevel属性分别为gamedisconnet

      当有网络连接时,运行start,将进入game场景;若无网络连接,将进入Disconnect场景。

8、打开game场景,实现游戏功能。

(1)   MainCamera上添加TouchHandler脚本,用于获取鼠标点击在屏幕上的世界坐标,以控制Player的移动。

(2)   Player上添加TNObject脚本。

(3)   Player创建PlayerMove脚本,控制Player的移动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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脚本,实现通过鼠标点击控制Player移动的功能。

1
2
3
4
5
6
7
8
9
10
using UnityEngine;
using System.Collections;
public class Ground : MonoBehaviour {
void OnClick()
{
PlayerMove.Instance.Target = TouchHandler.worldPos;
}
}

5)  将Player做成Prefab,删除game中的Player。

(6)   创建一个空对象,添加TNAutoCreate脚本,设置Prefab为Player。

 

9、打开start场景,将Player的Prefab添加到GameManager的TNManager脚本中的Objects中。

 

到这就OK了,可以发布一个exe运行起来,同时在unity中运行游戏,就可以看到效果了。

下面是Demo下载地址:

TNetDemo.txt (下载132 )

插件下载地址的地址在这 :Unity插件之-TNet Tasharen Networking

By · Unity教程 · 0 · Tags:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多