(Translated by https://www.hiragana.jp/)
GitHub - DukeChiang/DCET: Unity3D客户端和.Net Core服务器双端框架。DCET新群:1105670843
Skip to content
forked from egametang/ET

Unity3Dきゃく户端.Net Coreふく务器そうはしかまち。DCETしんぐん:1105670843

License

Notifications You must be signed in to change notification settings

DukeChiang/DCET

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

DCETUnity3Dきゃく户端.Net Coreふく务器てきそうはしかまち

DCETあずかETてき

DCETもと于ET4.0、5.0、6.0进行二次开发的分支版本,主要しゅよう异如

  • うつりじょUGUI块;
  • しんぞうFGUI块,包括ほうかつUI载、UI管理かんり、UIひかえけん管理かんりだい码自动生成せいせい插件とうかんせいてきFGUI工作こうさくりゅう
  • しんぞうぎょう为树块,包括ほうかつ视化编辑そうはし运行时、逻辑ぜん热更てきかんせいてきぎょう为树工作こうさくりゅう
  • しんぞうLua块,包括ほうかつCSharp.Lua(动翻译热さら层代码为Lua)、xLua(执行CSharp.Luaこぼし译的热更层Luaだい码)、RapidJson、lua-protobuf、LuaSocket、LPeg、FFI for lua53とうかんせいてきLua热更工作こうさくりゅう
  • はたかまち块化,并使用しようUnityてきPackageManager进行管理かんり以根すえ项目需求,按需选择引用いんようどう时将かまちかずゆう戏业务分离,使つかい维护かまちだい码更方便ほうべん

にゅう

1.搭建环境

第一步だいいっぽしも载DCET,しも载的方式ほうしきぶんさん种:

  • 直接ちょくせつ载压缩包,つう过下载地https://github.com/DukeChiang/DCET/archive/dukechiang_master.zip,进行载。
  • 使用しようGit命令めいれい进行载,つう过Git命令めいれいぎょう工具こうぐ,输入:git clone https://github.com/DukeChiang/DCET.git 标文けん夹(如:D:/WorkSpace/DCET)かい车即载。
  • 使用しようSourceTreeとう视化工具こうぐ进行载,找到Cloneこうのう,输入げんみちhttps://github.com/DukeChiang/DCET.git,选择标路みちD:/WorkSpace/DCET(しめせれいしかきさきてん击Clone。如果Cloneしつ败,以尝试方しき2进行载,しかきさき使用しようAddこうのう进行视化管理かんり

だいしも载并あんそうUnity2018.4.12f1,ゆう两种载方しきすえ自己じこてきじょう况选择一种方式下载,ただ需要じゅようのう正常せいじょう使用しようしょう版本はんぽんてきUnityそく论上支持しじだい多数たすうてきUnityてき版本はんぽんてき过由于Unity版本はんぽん众多,如果需要じゅようざい其他版本はんぽんてきUnityちゅう使用しよう,需自ぎょう适配。した载地如下:

だいさんあんそうVS2019,ざいあんそうUnity时,以选择安そうVS2019,あるものどおり过VSかん网下载(https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&rel=16),しかきさきあんそうてき时候选择:.NET桌面开发、使用しようC++桌面开发、使用しようUnityてきゆう戏开发(以去掉Unity编辑あんそう)、使用しようC++てきLinux开发、.Net Coreまたが平台ひらだい开发。推荐あんそう以上いじょう组件,ざいDCET开发なか可能かのうよういた

2.运行指南しなん

第一步だいいっぽ:启动ふく务器:搭建环境完成かんせいきさき开Server/Server.slnかい决方あんてん生成せいせいかい决方あん,如果ひかえせいだい输出てきこころざしちゅう所有しょゆう项目生成せいせい成功せいこうそくてん击“Start”启动ふく务器。如果ひかえせいだい输出てきこころざしちゅう提示ていじ存在そんざい生成せいせいしつ败的项目,则很可能かのう环境不全ふぜん导致,みぎ键点击“DCET.Init”项目,てん击属せい,查看标框.NET Core 3.0正常せいじょうあんそう,如果あんそう,则需要じゅよう载并あんそう(https://dotnet.microsoft.com/download),如果あんそうきさきもく标框依然いぜんぼつゆう.NET Core 3.0,说明VS版本はんぽん过低,更新こうしんいた最新さいしんばんそくかい决。

だい:启动きゃく户端:开Unity2018.4.12f1,てん击Open,选择DCETみちてきUnity录,てん击选择文けん夹,そく启动DCETきゃく户端。此时,开“Scenes/Init”场景,てん击运ぎょう按钮,そく成功せいこう运行,てん击登录,てん击进入地いりじ图,しかきさき就可以右键点击屏まくいた骷髅うつり动的じょう态同てきかんかたしめせれい。如果运行ちゅうてん击登录提示ていじ“System.Exception: Rpc error”,一般情况下是服务器未成功启动,需要じゅよう检查第一步だいいっぽいや完成かんせい。如果运行ちゅう现异つね“XLua.LuaException: F:/DukeChiangGit/ET/Unity/Assets\Res/Lua/Hotfix/Message/AutoGeneratedCode/OuterMessage.lua.txt:600: attempt to call a nil value (method 'setIsRequired')”,一般情况下是未生成Wrapぶんけんてん击菜单栏XLua/Generate Code生成せいせいそく

3.开发指南しなん

​ 为了かまちだい码维护更方便ほうべん,且按需引ようさら方便ほうべん,现已はたかまち块化,并通过UnityてきPackageManagerAssembly Definition进行管理かんり所以ゆえんしょう对于ETてき录结构会存在そんざい一定いっていてき异,ただし实际こうのう几乎ぼつゆう别。したぶんしょうぶん别阐じゅつふく务器きゃく户端てき开发指南しなん

  • ふく务器:ふく务器だい所在しょざい录为DCET/Server,并通过DCET/Server/Server.slnかい决方あん管理かんり所有しょゆう项目(包括ほうかつかまちかずゆう戏业务),かまちだい所在しょざい录为DCET/Server/Packages具体ぐたいてき项目はたざい进阶ぶん档中详细かい绍。ゆう戏业务代码所在しょざい录为DCET/Server/AssetsふんInit、Runtime、Hotfix、Benchmarkよん个项,其中Init为入こう项目,Runtime为非热更项目、Hotfix为热さら项目、Benchmark为测试项赖关けい为Init→Benchmark→Hotfix→Runtime。
  • きゃく户端:きゃく户代码所在しょざい录为DCET/Unity,并通过DCET/Unity/Unity.slnかい决方あん管理かんり所有しょゆう项目(包括ほうかつかまちかずゆう戏业务),かまちだい所在しょざい录为DCET/Unity/Packages具体ぐたいてき项目はたざい进阶ぶん档中详细かい绍。ゆう戏业务代码所在しょざい录为DCET/Unity/AssetsふんRuntime、Hotfix、Editorさん个项,其中Runtime为入こう项目热更项目、Hotfix为热さら项目、Editor为编辑器项目,赖关けい为Editor→Hotfix→Runtime,Runtimeどおり反射はんしゃあるLuaてき方式ほうしき启动Hotfix,所以ゆえん需要じゅようRuntime赖Hotfix。

​ 值得注意ちゅういてきかまちかずゆう戏业务的赖关けい为:ゆう戏业务→かまち赖不とうしょう导致项目混乱こんらん不利ふり于维护。

ちゅう:“A→B”表示ひょうじA引用いんようB,理解りかい为A以调ようB,B不可ふか以调ようA。

进阶

1.かたぎ块概じゅつ

​ DCETぶん为核しんしも载器、配置はいち、网络、协程锁、かず值、寻路、くだり为树、FGUI、Lua块, まい个模块一般いっぱんぶん为Editor、Runtime、Hotfixさん个项ほどじょしゅう),其中Editor为编辑器しょう关功のう,Runtime为非热更しょう关功のう,Hotfix为热さらしょう关功のう赖关けい为Editor→Hotfix→Runtime。而模块间てき赖关けい为Lua块→其他块→核心かくしん块,よう户可以遵循依赖关けい轻松てきうつりじょあるしんぞう块。

ちゅうきゃく户端引用いんようどおりAssembly Definition进行管理かんり,扩展めい.asmdefそん于各块的かく个文けん夹根录;ふく务器引用いんようどおり项目めい/赖项みぎ键进ぎょう管理かんり

2.核心かくしん

核心かくしん块是其他块的もと础,主要しゅよう提供ていきょう实体(组件)かず事件じけんけい统的もと础功のう支持しじ,也是ETかまち设计ちゅうさい精髓せいずいてき部分ぶぶん所在しょざい录为:Packages/DCET.Coreしもぶんはた重点じゅうてんかい绍这两个方面ほうめん

  • Entity

    ​ Entityそく为实たい经过纯粹てきECS不断ふだん改良かいりょう而来てき实体开发思想しそうあずかUnityてきGameObjectゆう一定いっていてき相似そうじ处,ただしまた截然せつぜん不同ふどう具体ぐたいてき不同ふどう点在てんざい于UnityさいようてきEntity+Componentてき设计思想しそう,而ETさいようてき一切いっさいみなEntityてき设计思想しそうどう时Entity也拥ゆうComponentてき能力のうりょく,这种设计はた为代码组织和重用じゅうよう带来极大てき便利べんりせい个代码结构就以像树状图一样清晰,并且だい码也はた以像树枝一样被轻松的组合重用。举个れいかくしょくゆう技能ぎのうれつひょうかく技能ぎのう操作そうさ方式ほうしき不同ふどうゆう直接ちょくせつ使用しようがたゆうたかしのうがた

    public class Role : Entity
    {
    	// すみ色相しきそう关信いき    
    }
    
    public class SkillComponent : Entity
    {
        private readonly Dictionary<long, Skill> idSkills = new Dictionary<long, Skill>();
        
        // 技能ぎのうぞう删查とう管理かんり方法ほうほう
    }
    
    public class Skill : Entity
    {
        // 技能ぎのうしょう关信いき
    }
    
    public class SkillChargeComponent : Entity
    {
        public void Start()
        {
        	// たかしのう开始    
        }
        
        public void End()
        {
            // たかしのう结束
        }
    }

    すえ以上いじょうしめせれい以看とう为充のうがた技能ぎのう时,以为SkillじょうSkillChargeComponent组件,技能ぎのう释放时就以走たかしのう逻辑;とう技能ぎのう直接ちょくせつ释放がた技能ぎのう时,则不需要じゅようSkillChargeComponent组件,也就かいはしたかしのう逻辑,这样一来则可以轻松重用代码逻辑,并且だい码组织结构也じゅうふんきよし晰。

    ​ 此外,EntityあずかUnityてきMonoBehaviour一样存在生命周期,而ETてき生命せいめい周期しゅうき实现方式ほうしきりゃくゆう不同ふどうどおり过Attribute标记启动时根すえ标记しんいき动注さつしかきさきすえ生命せいめい周期しゅうき执行,具体ぐたい用法ようほう如下:

    [ObjectSystem]
    public class TestComponentAwakeSystem : AwakeSystem<TestComponent, string>
    {
        public override void Awake(TestComponent self, string param1)
        {
            self.Awake(param1);
        }
    }
    
    [ObjectSystem]
    public class TestComponentLoadSystem : LoadSystem<TestComponent>
    {
        public override void Load(TestComponent self)
        {
            self.Load();
        }
    }
    
    [ObjectSystem]
    public class TestComponentUpdateSystem : UpdateSystem<TestComponent>
    {
        public override void Update(TestComponent self)
        {
            self.Update();
        }
    }
    
    [ObjectSystem]
    public class TestComponentLateUpdateSystem : LateUpdateSystem<TestComponent>
    {
        public override void LateUpdate(TestComponent self)
        {
            self.LateUpdate();
        }
    }
    
    [ObjectSystem]
    public class TestComponentDestroySystem : DestroySystem<TestComponent>
    {
        public override void Destroy(TestComponent self)
        {
            self.Destroy();
        }
    }
  • EventSystem

    ​ EventSystemそく事件じけんけい统,かい耦的重要じゅうよう方式ほうしきだい码和现实世界一せかいいち样,ゆうせんまん缕的联系,如果所有しょゆうてき联系如同乱麻らんま一般紧密的耦合在一起,はた对代码的维护造成ぞうせい巨大きょだいてきこま难。这时こう就需ようしょうだい码以为单はた引用いんよう事件じけん(あるゆだねたく)さく联系てき桥梁,其中引用いんよう一种强联系的方式,这种方式ほうしきさい直接ちょくせつさい简单,さい方便ほうべんさい紧密てき联系方式ほうしきただし如果仅仅ただよう这种联系方式ほうしき也会造成ぞうせいだい混乱こんらん,耦合紧密,难以重用じゅうよう,难以维护てき结果。这时こう也就需要じゅよう事件じけん(あるゆだねたく)进行联系,也就かい耦(いち种弱联系),とう引用いんよう类同时需よう引用いんよう引用いんよう类时,就需要じゅようどおり过这种方しき进行联系,这种方式ほうしき是能これよし重用じゅうよう创作条件じょうけん、避免だい形成けいせい网状结构てき联系方式ほうしきさい终代码结构就形成けいせい树状结构,きよし晰明りょう重用じゅうよう维护。

    ​ ETてき事件じけんけい统实现方しきあずかうわぶんひっさげいたてき生命せいめい周期しゅうき实现方式ほうしき原理げんりしょうどう具体ぐたいてき用法ようほう如下:

    // 发起事件じけん
    Game.EventSystem.Run(EventIdType.Log, "Hello World");
    
    // 事件じけん
    [Event(EventIdType.Log)]
    public class Log_WriteLine: AEvent<string>
    {
        public override void Run(string param1)
        {
            Console.WriteLine(param1);
        }
    }

3.AssetBundle

​ AssetBundle块主よう负责资源つつめ管理かんりしも载等こうのう所在しょざい录为:Packages/DCET.AssetBundle具体ぐたいてき使用しよう方法ほうほう如下:

配置はいち资源ふく务器和服わふく务器:Tools/Start Global Config

​ 构建资源つつみあんそうつつみ:Tools/Build Installer (だま认只かいつつみInit场景)

​ 启动资源ふく:Tools/Start Asset Server

​ 资源管理かんり组件:Hotfix/ResourcesComponent.cs

4.配置はいち

配置はいち块主よう负责Excel配置はいちひょう导出、解析かいせき管理かんりとうこうのう所在しょざい录为:Packages/DCET.Config具体ぐたいてき使用しよう方法ほうほう如下:

​ Excel配置はいちひょう导出:Tools/Start Config

配置はいちひょう管理かんり组件:Hotfix/ConfigComponent.cs

5.网络

​ 网络块主よう负责网络消息しょうそくおさむ发、消息しょうそく序列じょれつ/はん序列じょれつ消息しょうそく管理かんり、TCP/KCP传输协议,ふく务器启动、更新こうしん管理かんりとうこうのう所在しょざい录为:Packages/DCET.Config具体ぐたい使用しよう方法ほうほう如下:

生成せいせいProtobuf消息しょうそく协议:Tools/Gen Proto

ふく务器どう:Tools/Rsync

ふく务器命令めいれいぎょう:Tools/Start Server Command

ふく务器じゅう载:Tools/Start Server Manager

消息しょうそくぶん发组けん:MessageDispatcherComponent.cs

​ 网络すうすえ发送组件:NetOuterComponent.cs (配置はいちTCP/KCP/WebSocket传输协议)

​ 网络すうすえ接收せっしゅう组件:NetInnerComponent.cs (配置はいちTCP/KCP/WebSocket传输协议)

6.协程锁模块

7.かず值模块

8.寻路

9.くだり为树

10.FGUI

11.Lua

こう

1.xLua+CSharp.Lua适配原理げんり

FAQ

まち更新こうしん

わざ支持しじ

ETぐん:474643097

DCETしんぐん:1105670843

ETかん网:http://bbs.etframework.net/

About

Unity3Dきゃく户端.Net Coreふく务器そうはしかまち。DCETしんぐん:1105670843

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 98.3%
  • HTML 0.7%
  • Smalltalk 0.6%
  • XSLT 0.3%
  • ShaderLab 0.1%
  • Batchfile 0.0%