Unity中使用HTTP弱联网

来源:互联网 发布:淘宝积分 编辑:程序博客网 时间:2024/05/29 19:02

创建Web服务器

第一步
Ctrl+Shift+N打开
Ctrl+Shift+N打开
第二步
这里写图片描述
创建成功
这里写图片描述

这里创建Web服务器的方式为2012VS若果要发布IIS就要配置一些属性

配置IIS发布站点

第一步
第二步
第三步
配置IIS服务器完毕,按照正常的发布IIS站点的顺序就可以使用

HTTP两种通讯方式

  • Get的方式直接是把传输的数据放到URL中进行传输,优点是传输快,缺点是不安全,值在URL中可以看到,另一个是传输的量有限制
  • Post的方式是通过WWWFrom这个类进行添加数据,优点是安全,传输的量没有限制,缺点是传输速度慢

HTTP通讯管理类

/// <summary>/// Http通讯管理/// </summary>public class NetWorkHttp : SingletonMono<NetWorkHttp>{    #region 属性    /// <summary>    /// Web请求回调    /// </summary>    private Action<CallBackArgs> m_CallBack;    /// <summary>    /// Web请求回调数据    /// </summary>    private CallBackArgs m_CallBackArgs;    /// <summary>    /// 是否繁忙    /// </summary>    private bool m_IsBusy = false;    public bool IsBusy    {        get { return m_IsBusy; }    }    #endregion    protected override void OnStart()    {        base.OnStart();        m_CallBackArgs = new CallBackArgs();    }    #region 发送Web数据 SendData    /// <summary>    /// 发送Web数据    /// </summary>    /// <param name="url"></param>    /// <param name="callBack"></param>    /// <param name="isPost"></param>    /// <param name="json"></param>    public void SendData(string url, Action<CallBackArgs> callBack, bool isPost = false, string json = "")    {        if (m_IsBusy) return;        m_IsBusy = true;        m_CallBack = callBack;        if (isPost)        {            PostUrl(url, json);        }        else        {            GetUrl(url);        }    }    #endregion    #region Get请求 GetUrl    /// <summary>    /// Get请求    /// </summary>    /// <param name="url"></param>    private void GetUrl(string url)    {        WWW data = new WWW(url);        StartCoroutine(Get(data));    }    private IEnumerator Get(WWW data)    {        yield return data;        m_IsBusy = false;        if (string.IsNullOrEmpty(data.error))        {            if (m_CallBack != null)            {                Debug.Log(data.text);                m_CallBackArgs.HasError = false;                m_CallBackArgs.Json = data.text;                m_CallBack(m_CallBackArgs);            }        }        else        {            if (m_CallBack != null)            {                m_CallBackArgs.HasError = true;                m_CallBackArgs.ErrorMsg = data.error;                m_CallBack(m_CallBackArgs);            }        }    }    #endregion    #region  Post请求 PostUrl    /// <summary>    /// Post请求    /// </summary>    /// <param name="url"></param>    /// <param name="json"></param>    private void PostUrl(string url, string json)    {        //定义一个表单        WWWForm form = new WWWForm();        //给表单添加值        form.AddField("", json);        WWW data = new WWW(url, form);        StartCoroutine(Requset(data));    }    /// <summary>    /// 请求服务器    /// </summary>    /// <param name="data"></param>    /// <returns></returns>    private IEnumerator Requset(WWW data)    {        yield return data;        m_IsBusy = false;        if (string.IsNullOrEmpty(data.error))        {            if (m_CallBack != null)            {                m_CallBackArgs.HasError = false;                m_CallBackArgs.Json = data.text;                m_CallBack(m_CallBackArgs);            }        }        else        {            if (m_CallBack != null)            {                m_CallBackArgs.HasError = true;                m_CallBackArgs.ErrorMsg = data.error;                m_CallBack(m_CallBackArgs);            }        }    }    #endregion    #region Web请求回调数据 CallBackArgs    /// <summary>    /// Web请求回调数据    /// </summary>    public class CallBackArgs : EventArgs    {        /// <summary>        /// 是否有错        /// </summary>        public bool HasError;        /// <summary>        /// 错误原因        /// </summary>        public string ErrorMsg;        /// <summary>        /// Json数据        /// </summary>        public string Json;    }     #endregion}

Mono单例基类

public class SingletonMono<T> : MonoBehaviour where T : MonoBehaviour{    #region 单例    private static T instance;    public static T Instance    {        get        {            if (instance == null)            {                GameObject obj = new GameObject(typeof(T).Name);                DontDestroyOnLoad(obj);                instance = obj.GetOrCreateComponent<T>();            }            return instance;        }    }    #endregion    //Use this for Initialization    void Awake()    {        OnAwake();    }    // Before Update Execute    void Start()    {        OnStart();    }    // Update is called once per frame    void Update()    {        OnUpdate();    }    void Destroy()    {        BeforeOnDestroy();    }    protected virtual void OnAwake() { }    protected virtual void OnStart() { }    protected virtual void OnUpdate() { }    protected virtual void BeforeOnDestroy() { }}
原创粉丝点击