zoukankan      html  css  js  c++  java
  • scut和unity之间收发请求返回

    前期首先配置好scut服务器,我在上篇博客中已经写到

    1、在scut中设置协议,协议号100,版本号,设置请求参数String类型的userid和userpassword和返回参数的string字符串Content

    2、将网页中显示的服务器代码copy到vs中命名为Action100的类中

    using System;
    using System.Collections.Generic;
    
    using ZyGames.Framework.Game.Contract.Action;
    using ZyGames.Framework.Game.Service;
    
    namespace GameServer.CsScript.Action
    {
    
        /// <summary>
        /// helloworld
        /// </summary>
        /// <remarks>继续BaseStruct类:允许无身份认证的请求;AuthorizeAction:需要身份认证的请求</remarks>
        public class Action100 : AuthorizeAction
        {
    
            #region class object
            #endregion
    
            /// <summary>
            /// 用户id
            /// </summary>
            private string _userID;
            /// <summary>
            /// 用户密码
            /// </summary>
            private string _userPassword;
            /// <summary>
            /// 
            /// </summary>
            private string _content;
    
    
            public Action100(ActionGetter actionGetter)
                : base((short)100, actionGetter)
            {
    
            }
    
            /// <summary>
            /// 检查的Action是否需要授权访问
            /// </summary>
            protected override bool IgnoreActionId
            {
                get { return true; }
            }
    
            /// <summary>
            /// 客户端请求的参数较验
            /// </summary>
            /// <returns>false:中断后面的方式执行并返回Error</returns>
            public override bool GetUrlElement()
            {
                if (httpGet.GetString("UserID", ref _userID)
                    && httpGet.GetString("UserPassword", ref _userPassword))
                {
             _congtent = "server data"; return true; } return false; } /// <summary> /// 业务逻辑处理 /// </summary> /// <returns>false:中断后面的方式执行并返回Error</returns> public override bool TakeAction() { return true; } /// <summary> /// 下发给客户的包结构数据 /// </summary> public override void BuildPacket() { this.PushIntoStack(_content); } } }

    3、运行vs中scut服务端

    4、编写UNITY中一个登陆demo,登陆成功发送请求,返回一个_content字符串

     

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    using GameRanking.Pack;
    
    public class GameLogin : MonoBehaviour
    {
        [SerializeField]
        private UIInput aPhoneLoginInput = null;
    
        [SerializeField]
        private UIInput aPhonePasswordInput = null;
    
        [SerializeField]
        private UILabel aTipsLabel = null;
    
        private string userId;
        private string userPassword;
    
        private ActionParam actionParam;
        //todo 启用自定的结构
        bool useCustomAction = false;
    
        public void OnUserLogin()
        {
            if (aPhoneLoginInput.value == "" || aPhonePasswordInput.value == "")
            {
                Debug.Log("未输入用户名密码");
                OnFadeIn();
                aTipsLabel.text = "请输入手机号或是密码";
            }
            else
            {
                userId = aPhoneLoginInput.value;
                userPassword = aPhonePasswordInput.value;
                if (useCustomAction)
                {
                    Net.Instance.HeadFormater = new CustomHeadFormater();
                    Request1001Pack requestPack = new Request1001Pack() { PageIndex = 1, PageSize = 20 };
                    actionParam = new ActionParam(requestPack);
                }
                else
                {
                    actionParam = new ActionParam();
                    actionParam["userid"] = userId;
                    actionParam["userpassword"] = userPassword;
                }
                Debug.Log("点击成功userid" + actionParam["userid"] + "userpassword" + actionParam["userpassword"]);
                NetWriter.SetUrl("127.0.0.1:9001");
                Net.Instance.Send(100, HelloWorldReturn,actionParam); 
            }
        }
    
    
        void HelloWorldReturn(ActionResult action)
        {
            Debug.Log(action["Content"]);
        }
    
        void GetUser()
        {
            userId = aPhoneLoginInput.value;
            userPassword = aPhonePasswordInput.value; 
        }
    
    
        void OnFadeIn()
        {
            aTipsLabel.gameObject.SetActive(true);
            TweenAlpha ta = aTipsLabel.gameObject.GetComponent<TweenAlpha>();
            ta.ResetToBeginning();
            ta.enabled = true;
            ta.PlayForward();
            EventDelegate.Set(ta.onFinished, OnFadeOut);
        }
    
        void OnFadeOut()
        {
            aTipsLabel.gameObject.SetActive(false);
        }
    }
  • 相关阅读:
    Windows Phone 7(WP7)开发 自订磁贴(深度链接)
    Windows Phone 7(WP7)开发 在ViewModel中使用NavigationService
    Windows Phone 7(WP7)开发 显示长文本(高度大于2000px)
    类属性生成器(小程序)
    Windows Phone 7(WP7)开发 ListBox的分页加载
    Windows Phone 7(WP7)开发工具 查看独立存储空间中数据库内容
    Windows Phone 7(WP7)开发 获取网络状态
    发布一个XNA写的小雷电源码
    用python来个百度关键词刷排名脚本
    win7下 VirtualBox虚拟机开机后台自启动
  • 原文地址:https://www.cnblogs.com/unity3d-Yang/p/6404528.html
Copyright © 2011-2022 走看看