创建您的第一个应用¶
下载Fantasy后, 您可以把它放到你项目文件夹中, 展开Fantasy将得到以下结构:
.
├─ Book
├─ Examples/ # 示例项目文件夹
│ └─ Client # 示例的Unity客户端源代码
│ └─ Server # 示例的服务端源代码
│ └─ Config # 示例的配置文件
│ └─ Tools # 示例的开发工具,目前只有导表工具
├─ Fantasy.Net # 服务端包
├─ Fantasy.Unity # Unity包
├─ Fantasy.Packages # 框架扩展包
├─ Tools # 框架提供的工具都在这里,目前只有导表工具
└─ README.md
安装框架¶
客户端¶
接下来,我们将介绍在不同平台下安装的方法。每个平台都有其独特的安装步骤。我们将逐一讲解,并帮助您顺利完成Fantasy的安装,以便后续操作。
1.点击Unity的菜单Window->Package Manager,在弹出的窗口点击左上角的+号。
2.在下拉菜单里选择Add package from git URL。
3.在输入框里输入
GitHub仓库地址 https://github.com/qq362946/Fantasy.Unity.git。
Gitee仓库地址 https://gitee.com/Sining/Fantasy.Unity.git
4.在Player Settings->Other Settings里的Script Define Symbols里添加FANTASY.UNITY。
5.如果是开发WebGL要再加一个FANTASY_WEBGL预编译指令,如果不是WebGL开发不要加这个指令。
服务端¶
1.在项目中使用Nuget包管理搜索Fantasy-Net。
2.或通过dotnet add package Fantasy-Net 来安装。
3.Fantasy-Net安装完成后,会在安装项目的根目录生成ServerConfig文件夹和NLog.xsd和NLog.config文件
NLog.xsd和NLog.config文件是做什么的?
运行框架¶
客户端¶
// 根据创建一个日志类并实现ILog接口,把接口里的方法都实现一下。
// 可以参考仓库的Examples/Console/Fantasy.Console.Main/ConsoleLog.cs文件。
// 注册日志实例到框架中
Fantasy.Log.Register(new ConsoleLog());
// 注意new ConsoleLog()仅是个例子,根据你实现的日志类,名字会有不同。
// 初始化框架
Fantasy.Platform.Console.Entry.Initialize(GetType().Assembly);
// 使用新建或现有的Node里的_Process或_PhysicsProcess里调用在antasy.Platform.Console.Entry.Update()方法。
// 创建用一个客户端的Scene没如果有个别同学不需要使用框架的Scene
// 那就把Scene当网络接口使用。
var scene = await Fantasy.Platform.Unity.Console.CreateScene();
// 根据创建一个日志类并实现ILog接口,把接口里的方法都实现一下。
// 可以参考仓库的Examples/Console/Fantasy.Console.Main/ConsoleLog.cs文件。
// 注册日志实例到框架中
Fantasy.Log.Register(new ConsoleLog());
// 注意new ConsoleLog()仅是个例子,根据你实现的日志类,名字会有不同。
// 初始化框架
Fantasy.Platform.Console.Entry.Initialize(GetType().Assembly);
// 执行StartUpdate方法
Fantasy.Platform.Console.Entry.StartUpdate();
// 创建用一个客户端的Scene没如果有个别同学不需要使用框架的Scene
// 那就把Scene当网络接口使用。
var scene = await Fantasy.Platform.Console.Entry.CreateScene();
在程序的入口处执行上述代码时,框架启动需要获取要使用的程序集。因此,Initialize 方法必须接收至少一个程序集作为参数,当然也可以同时传入多个程序集。如果某个程序集不需要使用框架的功能,可以选择不传递,具体情况视个人需求而定。截至目前,框架已经可以正常运行。
服务端¶
Fantasy.Net启动示例
// 初始化配置文件
// 可以通过多种方式加载这四个启动配置文件,并将它们传递给这四个方法。这些方式可以包括:
// 文件路径:直接指定配置文件的路径。
// 网络请求:从远程服务器下载配置文件并加载。
// 如果重复初始化方法会覆盖掉上一次的数据,非常适合热重载时使用
MachineConfigData.Initialize(配置文件Json数据);
ProcessConfigData.Initialize(配置文件Json数据);
WorldConfigData.Initialize(配置文件Json数据);
SceneConfigData.Initialize(配置文件Json数据);
// 初始化框架,添加程序集到框架中
Fantasy.Platform.Net.Entry.Initialize(Fantasy.AssemblyHelper.Assemblies);
// 启动Fantasy.Net
await Fantasy.Platform.Net.Entry.Start();
// 也可以使用下面的Start方法来初始化并且启动Fantasy.Net
// 使用下面这个方法就不用使用上面的两个方法了。
// await Fantasy.Platform.Net.Entry.Start(Fantasy.AssemblyHelper.Assemblies);
关于Assembly
GetType().Assembly仅是为了演示接口的参数传递,不同的环境不一定都是用GetType().Assembly来获取Assembly的。
在程序的入口处执行上述代码时,框架启动需要获取要使用的程序集。因此,Start 方法必须接收至少一个程序集作为参数,当然也可以同时传入多个程序集。如果某个程序集不需要使用框架的功能,可以选择不传递,具体情况视个人需求而定。截至目前,框架已经可以正常运行。