TNet TasharenNetworking插件可用于轻量级多人网络游戏的网络功能的开发。所以今天我们就简单看一下tnet tasharen networking简介

功能说明:

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

实现过程:

1、创建项目TNetDemo,导入TNetTasharen Networking 2.0.3.unitypackage。
2、解压TNetDemo\Assets\TNet\TNetServer.zip中的TNServer.exe,并运行。

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



4、创建场景game,添加cube做Ground,添加capsule做Player,作为游戏场景。



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



6、将start、game、disconnet添加到File - Build Settings - Scenes In Build中。



7、打开start场景,在GameManager的TNAutoJoin脚本中设置First Level和DisconnetLevel属性分别为game和disconnet。


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


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

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


(2)   在Player上添加TNObject脚本。


(3)   为Player创建PlayerMove脚本,控制Player的移动。
  1. using UnityEngine;
  2. using System.Collections;
  3. using TNet;
  4. public class PlayerMove : TNBehaviour {
  5. public static PlayerMove Instance;
  6. /// <summary>
  7. /// 目标位置
  8. /// </summary>
  9. private Vector3 _target;
  10. public Vector3 Target
  11. {
  12. set
  13. {
  14. tno.Send("OnSetTarget", TNet.Target.AllSaved, value);
  15. }
  16. }
  17. /// <summary>
  18. /// 移动速度
  19. /// </summary>
  20. public float Speed = 5f;
  21. void Awake()
  22. {
  23. //只能操作自己实例化的Player
  24. if (TNManager.isThisMyObject)
  25. {
  26. PlayerMove.Instance = this;
  27. }
  28. }
  29. void Update()
  30. {
  31. this.transform.position = Vector3.Lerp(this.transform.position, this._target, Time.deltaTime * Speed);
  32. }
  33. [RFC]
  34. void OnSetTarget(Vector3 v)
  35. {
  36. this._target = v;
  37. }
  38. /// <summary>
  39. /// 有新角色加入时,初始化已有角色的位置
  40. /// </summary>
  41. /// <param name="p"></param>
  42. void OnNetworkPlayerJoin(Player p)
  43. {
  44. tno.Send("OnSetTargetImmediate", TNet.Target.AllSaved, transform.position);
  45. }
  46. [RFC]
  47. void OnSetTargetImmediate(Vector3 v)
  48. {
  49. this.transform.position = v;
  50. }
  51. }
这里需要注意的是,Player的父类是TNBehaviour。
(4)   为Ground创建Ground脚本,实现通过鼠标点击控制Player移动的功能。
  1. using UnityEngine;
  2. using System.Collections;
  3. public class Ground : MonoBehaviour 
  4. {
  5. void OnClick()
  6. {
  7. PlayerMove.Instance.Target = TouchHandler.worldPos;
  8. }
  9. }
(5)  将Player做成Prefab,删除game中的Player。

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


 

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



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



TNet Tasharen Networking插件下载地址:http://yunpan.cn/cKHf43HQKYbRb(提取码 ed53)

TNetDemo源码地址:http://git.oschina.net/darcy_d/unity_TNetDemo
TNet TasharenNetworking视频教程:https://www.taikr.com/course/161