Godot.NET C# 工程化开发(1):通用Nuget 导入+ 模板文件导出,包含随机数生成,日志管理,数据库连接等功能

本文介绍了在Godot项目中使用C#进行工程化开发,包括Nuget包如NewtonSoft、Bogus和FreeSql的集成,ORM框架FreeSql的配置,接口设计,以及Nlog的日志管理。作者分享了如何处理项目结构、错误修正和VisualStudio配置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

我们学编程,不要重复造工具。我之所以使用C# 开发Godot ,而不是Unity。很大的原因就是Godot.NET 支持Nuget的导入,因为Nuget是.NET Core 的第三方库。我也将Godot 的Visual Studio 项目的.NET 版本强制升级到的.NET Core 8.0版本,目前还没有任何问题。

Github项目地址,包含模板文件

Gclove2000/GodotNet_Csharp_IOC_SimpleTemplate

后期思考补充

我将项目分成3层,从上到下是

  • Godot:只是单纯挂载脚本
  • GD_Program:负责游戏逻辑
  • GD_Extension:通用的工具类

但是我后面想了一下,游戏逻辑也有部分是可以通用的,所以我感觉我的三层构造应该是存在过度封装了。两层封装说不定好一些。我后面打算先用两层封装好一点。等后面项目复杂度上来之后,再细分好了。

项目设置

编写失误

我写到后面的时候发现,Interfaces应当放在GD_Extension中。读者记得修改
在这里插入图片描述

环境

  • window 10
  • .net core 8.0
  • godot 4.2.1
  • visual studio 2022

visual studio 配置

  • GD_Extesion:Godot工具类,后面用于导出
    • Assests:资源文件夹
    • Utils:工具类
    • Interfaces:接口类
  • GD_Program:Godot运行逻辑
    • SceneModels:场景脚本实际运行类,IOC装配生成
    • Services:服务类
    • Program.cs:IOC容器位置
  • Godot:Godot引擎生成解决方案
    • Scene:挂载脚本,只用于建立脚本连接关系

在这里插入图片描述

详细的配置看我这篇文章

Godot 学习笔记(5):彻底的项目工程化,解决GodotProjectDir is null+工程化范例

Nuget 推荐

Nuget 介绍
Newtonsoft.Json 高性能Json序列化库
Bogus 随机测试数据生成,比如随机数据,随机人民,地名,手机号,账号,密码
Microsoft.Extensions.DependencyInjection 微软IOC框架,个人推荐
Autofac 第三方IOC 框架,性能也不错
Nlog 日志管理
FreeSql 数据库ORM框架,个人推荐
SqlSugar 数据库ORM框架,一般来说够用了,游戏开发也不是高频并发操作
MiniExcel Excel ORM框架,简易操作。建议使用CSV
Microsoft.AspNetCore.SignalR.Common 微软开发即时通讯框架,用于解决多人联网
Grpc 谷歌开发的即使通讯框架,用于解决多人联网

NewtonSoft 成功

在这里插入图片描述

//以匿名对象为例
GD.Print(JsonConvert.SerializeObject(new
{
   
    Name =  "小王",
    Age = "24"
}));

在这里插入图片描述

Bogus 成功

在这里插入图片描述

Github文档地址

Bugous Github文档地址

在这里插入图片描述

随机生成

//以随机数为例
var faker = new Faker();
for(var i =  0; i < 10; i++)
{
   
    GD.Print($"Bogus,int 0-10:[{
     faker.Random.Int(0, 10)}]");
}

在这里插入图片描述

构造器生成

public class MyStudent
{
   

    public int Id {
    get; set; }

    public string? Name {
    get; set; }

    public int Age {
    get; set; }


    /// <summary>
    /// 构建faker构造器
    /// </summary>
    public static Faker<MyStudent> Faker = new Faker<MyStudent>()
        .RuleFor(t=>t.Id,f=>f.IndexFaker)
        .RuleFor(t=>t.Name,f=>f.Name.FindName())
        .RuleFor(t=>t.Age,f=>f.Random.Int(10,30));

  
}
//以构造器为例
for (var i = 0; i < 10; i++)
{
   
    var stu = MyStudent.Faker.Generate();
    GD
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值