开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

项目源码

关注:1053

当前位置:游戏蛮牛 资源专区 项目源码

查看: 378|回复: 1

[Unity] 写了个网络游戏框架Uwork包含服务端和客户端

[复制链接]  [移动端链接]
2初来乍到
130/150
排名
14803
昨日变化
16

1

主题

17

帖子

130

积分

Rank: 2Rank: 2

UID
8864
好友
0
蛮牛币
275
威望
0
注册时间
2013-11-25
在线时间
88 小时
最后登录
2017-2-19
发表于 2016-12-22 18:24:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 西木 于 2016-12-23 21:01 编辑

项目地址:http://git.oschina.net/ximu/Uwork
[C#] 纯文本查看 复制代码
Uwork是包含服务端、客户端开发的一套框架。
1)服务器基于SuperSocket(http://www.supersocket.net/)
2)通信协议基于Json,使用Newtonsoft.Json序列化
3)Unity3d实现MVC
4)无需定义通信协议
5)多平台支持

[C#] 纯文本查看 复制代码
    服务端
//继承Ucontroller启动器自动加载并实例化
    public class TestController : UController
    {
        //框架启动完成,框架事件参考UEvent定义
        [UControllerAction(UEvent.INIT_FINISH)]
        public static void Init()
        {
            Console.Title = "测试服务器";
            UServer server = new UServer(2016);
        }
        //Hello测试
        [UControllerAction("msg.test.hello")]
        public void TestHello(USession session,string data)
        {
            Console.WriteLine(data);
            session.Send("msg.test.hello.resp", "Hello Client!!!");
        }

        //排行榜测试
        [UControllerAction("msg.test.rank")]
        public void TestRank(USession session)
        {
            session.Send("msg.test.rank.resp", 10, new List<string>() { "rank1", "rank2", "rank3", "rank4" });
        }
    }

[C#] 纯文本查看 复制代码

客户端
using UnityEngine;
using System.Collections;
using UFrameWork;
using System.Collections.Generic;

public class TestView : UView 
{
    public IEnumerator Start()
    {
        WaitForAction action = Action<WaitForAction>("cmd.connect.server");
        yield return action.Wait();

        if (action.IsTimeOut)
        {
            Debug.LogError("连接失败");
            yield break;
        }

        Debug.Log("连接成功");

        StartCoroutine(Hello());
        StartCoroutine(Rank());
    }

    private IEnumerator Hello()
    {
        WaitForAction action = Action<WaitForAction>("cmd.send.hello","你好服务器!");
        yield return action.Wait();

        if (action.IsTimeOut)
        {
            Debug.LogError("获取超时");
            yield break;
        }

        Debug.Log(action.Result<string>());
    }

    private IEnumerator Rank()
    {
        WaitForAction action = Action<WaitForAction>("cmd.send.rank");
        yield return action.Wait();

        if (action.IsTimeOut)
        {
            Debug.LogError("获取超时");
            yield break;
        }

        Debug.Log("self:" + action.Result<int>());

        List<string> list = action.Result<List<string>>(2);

        foreach (string v in list)
        {
            Debug.Log("rank:"+v);
        }
    }
}






回复

使用道具 举报

1

主题

14

帖子

15

积分

Rank: 1

UID
200585
好友
0
蛮牛币
16
威望
0
注册时间
2017-1-10
在线时间
0 小时
最后登录
2017-1-10
发表于 2017-1-10 17:42:44 | 显示全部楼层
学习一下

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表