Skip to content

创建您的第一个应用

下载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、通过仓库下载源代码到本地
    GitHub仓库地址 https://github.com/qq362946/Fantasy.git
    Gitee仓库地址 https://gitee.com/Sining/Fantasy.git
2、复制源代码的根目录下Fantays.Console/Runtime到您的项目中。
3、在你的编辑器添加预编译指令FANTASY.Console。
1、通过仓库下载源代码到本地
    GitHub仓库地址 https://github.com/qq362946/Fantasy.git
    Gitee仓库地址 https://gitee.com/Sining/Fantasy.git
2、复制源代码的根目录下Fantays.Console/Runtime到您的项目中。
3、在你的编辑器添加预编译指令FANTASY.Console。

服务端

 1.在项目中使用Nuget包管理搜索Fantasy-Net。
 2.或通过dotnet add package Fantasy-Net 来安装。
 3.Fantasy-Net安装完成后,会在安装项目的根目录生成ServerConfig文件夹和NLog.xsd和NLog.config文件
NLog.xsd和NLog.config文件是做什么的?
为了确保Fantasy项目正确记录日志功能,由于该项目使用了NLog作为日志框架,因此需要包含以下两个关键配置文件:

NLog.xsd:这是NLog日志库的XML架构定义文件,用于帮助IDE进行配置文件(如NLog.config)的格式校验和自动补全,确保配置语法正确。

NLog.config:这是NLog的主配置文件,用于定义日志的输出格式、日志级别、日志目标(例如文件、数据库等)和其他相关设置。
ServerConfig文件夹是做什么用的?
Fantasy.Net 启动时需要依赖四个配置文件,这些文件位于 ServerConfig 文件夹中。

运行框架

客户端

 // 初始化框架
 Fantasy.Platform.Unity.Entry.Initialize(GetType().Assembly);
 // 创建用一个客户端的Scene没如果有个别同学不需要使用框架的Scene
 // 那就把Scene当网络接口使用。
 var scene = await Fantasy.Platform.Unity.Entry.CreateScene();
// 根据创建一个日志类并实现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能够正常启动,由于其启动需要四个启动配置文件,执行下述代码才能成功启动程序。

请顺序观看到1.2.配置文件后再进行下面代码的运行。

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 方法必须接收至少一个程序集作为参数,当然也可以同时传入多个程序集。如果某个程序集不需要使用框架的功能,可以选择不传递,具体情况视个人需求而定。截至目前,框架已经可以正常运行。