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,作为游戏场景。


TNet Tasharen Networking 学习总结_第1张图片


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



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


TNet Tasharen Networking 学习总结_第2张图片


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


TNet Tasharen Networking 学习总结_第3张图片

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


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

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


(2)   Player上添加TNObject脚本。


TNet Tasharen Networking 学习总结_第4张图片

(3)   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脚本,实现通过鼠标点击控制Player移动的功能。

using UnityEngine;
using System.Collections;

public class Ground : MonoBehaviour {

    void OnClick()
    {
        PlayerMove.Instance.Target = TouchHandler.worldPos;
    }
}

 
 

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

(6)   创建一个空对象,添加TNAutoCreate脚本,设置PrefabPlayer


TNet Tasharen Networking 学习总结_第5张图片

 

9、打开start场景,将PlayerPrefab添加到GameManagerTNManager脚本中的Objects中。


 


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






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


TNetDemo源码地址:http://git.oschina.net/darcy_d/unity_TNetDemo


TNet TasharenNetworking视频教程:http://www.taikr.com/course/161

你可能感兴趣的:(unity,tnet)