当前位置: 首页 > news >正文

flas网站开发工具顺义网站制作

flas网站开发工具,顺义网站制作,商会网站建设方案,wordpress 移动端模板主题文章目录 前言Github项目地址#xff0c;包含模板文件后期思考补充项目设置编写失误环境visual studio 配置详细的配置看我这篇文章 Nuget 推荐NewtonSoft 成功Bogus 成功Github文档地址随机生成构造器生成构造器接口(推荐) 文件夹设置Nlog 成功#xff01;Nlog.configNlogHe… 文章目录 前言Github项目地址包含模板文件后期思考补充项目设置编写失误环境visual studio 配置详细的配置看我这篇文章 Nuget 推荐NewtonSoft 成功Bogus 成功Github文档地址随机生成构造器生成构造器接口(推荐) 文件夹设置Nlog 成功Nlog.configNlogHelper.csNloghelper使用测试 FreeSql 以Sqlite为例FreeSql官方文档sqlite3 安装CodeFrist则不需要安装。我这里用CodeFrist生成Sqlite数据库文件这里我取名为sqliteDb.dbNuget引入FreeSql核心和FreeSql的Sqlite支持FreeSqlHelper CodeFrist模式T_ModelBase 数据库基类Bogus随机生成T_Person数据库插入类我习惯用T开头带表数据库实体 连接插入查询测试使用 GD_Extension项目打包用于复用Icon封面准备visual studio 导出 Github项目地址包含模板文件总结 前言 我们学编程不要重复造工具。我之所以使用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.0godot 4.2.1visual studio 2022 visual studio 配置 GD_Extesion:Godot工具类后面用于导出 Assests:资源文件夹Utils:工具类Interfaces接口类 GD_Program:Godot运行逻辑 SceneModels:场景脚本实际运行类IOC装配生成Services:服务类Program.cs:IOC容器位置 GodotGodot引擎生成解决方案 Scene:挂载脚本只用于建立脚本连接关系 详细的配置看我这篇文章 Godot 学习笔记(5)彻底的项目工程化解决GodotProjectDir is null工程化范例 Nuget 推荐 Nuget介绍Newtonsoft.Json高性能Json序列化库Bogus随机测试数据生成比如随机数据随机人民地名手机号账号密码Microsoft.Extensions.DependencyInjection微软IOC框架个人推荐Autofac第三方IOC 框架性能也不错Nlog日志管理FreeSql数据库ORM框架个人推荐SqlSugar数据库ORM框架一般来说够用了游戏开发也不是高频并发操作MiniExcelExcel ORM框架简易操作。建议使用CSVMicrosoft.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构造器/// /summarypublic static FakerMyStudent Faker new FakerMyStudent().RuleFor(tt.Id,ff.IndexFaker).RuleFor(tt.Name,ff.Name.FindName()).RuleFor(tt.Age,ff.Random.Int(10,30));}//以构造器为例 for (var i 0; i 10; i) {var stu MyStudent.Faker.Generate();GD.Print($Bogus:[{JsonConvert.SerializeObject(stu)}]); }构造器接口(推荐) 个人建议上个接口更规范一点 public interface IModelFakerT where T : class {public T FakerOne();public IEnumerableT FakeMany(int num); }public class MyStudent : IModelFakerMyStudent {public int Id { get; set; }public string? Name { get; set; }public int Age { get; set; }/// summary/// 构建faker构造器/// /summaryprivate FakerMyStudent faker new FakerMyStudent().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));public MyStudent FakerOne(){return faker.Generate();}public IEnumerableMyStudent FakeMany(int num){return faker.Generate(num);} }文件夹设置 因为后面会涉及到文件夹的设置问题我这里简单说明一下 添加配置 Visual Studio C# 项目生成时复制项目资源目录到生成目录 Nlog 成功 Nlog.config ?xml version1.0 encodingutf-8 ? nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance targets!--将Debug导出为每小时一个--target namedebugxsi:typeFilefileName${basedir}/Logs/${date:formatyyyy}/${date:formatMM}/${date:formatdd}/${date:formatHH}.loglayout${date:formatyyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message} /!--将Error导出为每天一个而且存放在一个Error文件夹中--target nameerrorxsi:typeFilefileName${basedir}/Logs/${date:formatyyyy}/${date:formatMM}/Error/${date:formatdd}.loglayout${date:formatyyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message} //targetsruleslogger name*minlevelDebugwriteTodebug /logger name*minlevelErrorwriteToerror //rules /nlog NlogHelper.cs Godot的输出比较特别需要特别处理一下 public class NlogHelper {private Logger logger;public NlogHelper(){var url string.Format({0}Assests/NLog.config, AppDomain.CurrentDomain.BaseDirectory.ToString());GD.Print($Nlog加载完毕url地址为[{url}]);LogManager.Configuration new XmlLoggingConfiguration(url);logger NLog.LogManager.GetCurrentClassLogger();}public void Debug(string msg){GD.Print(msg);logger.Debug(msg);}public void Info(string msg){GD.Print($[info]:{msg});logger.Info(msg);}public void Error(string msg){GD.PrintErr(msg);GD.PushError(msg);logger.Error(msg);}public void Warning(string msg){GD.Print($[warning]:{msg});GD.PushWarning(msg);logger.Warn(msg);} }Nloghelper使用 测试 nlogHelper.Debug(Debug); nlogHelper.Info(Info); nlogHelper.Warning(Warning); nlogHelper.Error(Error);FreeSql 以Sqlite为例 FreeSql官方文档 FreeSql官方文档 sqlite3 安装CodeFrist则不需要安装。我这里用CodeFrist SQLite 安装 生成Sqlite数据库文件这里我取名为sqliteDb.db sqlite3 sqliteDb.db .open sqliteDb.dbNuget引入FreeSql核心和FreeSql的Sqlite支持 FreeSqlHelper CodeFrist模式 C# FreeSql使用基于Sqlite的DB Frist和Code First测试 T_ModelBase 数据库基类Bogus随机生成 /// summary /// 基类 /// /summary public abstract class T_ModelBase {/// summary/// 主键自增/// /summary[Column(IsPrimary true,IsIdentity true)]public long Id { get; set; }/// summary/// 创建时间/// /summarypublic DateTime CreateTime { get; set; } DateTime.Now;/// summary/// 更新时间/// /summarypublic DateTime UpdateTime { get; set; } DateTime.Now;/// summary/// 假删除/// /summarypublic bool IsDelete { get; set; } false;public DateTime DeleteTime { get; set; } }T_Person数据库插入类我习惯用T开头带表数据库实体 public class T_Person : T_ModelBase, IModelFakerT_Person {public int Age { get; set; }public string Name { get; set; }private FakerT_Person faker new FakerT_Person().RuleFor(t t.Id, f f.IndexFaker).RuleFor(t t.CreateTime, f f.Date.Between(new DateTime(2024, 1, 1), DateTime.Now)).RuleFor(t t.Name, f f.Name.FindName()).RuleFor(t t.Age, f f.Random.Int(10, 30));public IEnumerableT_Person FakeMany(int num){return faker.Generate(num);}public T_Person FakerOne(){return faker.Generate();} } 连接插入查询测试使用 var isConnect freeSqlHelper.SqliteDb.Ado.ExecuteConnectTest(10); GD.Print($数据库连接状态:[{isConnect}]);var insertLists new T_Person().FakeMany(10);var insertName freeSqlHelper.SqliteDb.Insert(insertLists).ExecuteAffrows(); GD.Print($数据库插入[{insertName}]行数据);var selectLists freeSqlHelper.SqliteDb.QueryableT_Person().OrderByDescending(tt.Id).Take(10).ToList();foreach (var item in selectLists) {GD.Print(JsonConvert.SerializeObject(item)); }GD_Extension项目打包用于复用 我写到后面的时候发现Interfaces应当放在GD_Extension中。读者记得修改 Icon封面准备 【VisualStudio 】VisualStudio2022 项目模板 准备一个Godot Icon的图片用于封面展示 visual studio 导出 Github项目地址包含模板文件 Gclove2000/GodotNet_Csharp_IOC_SimpleTemplate 总结 我这里就是简单引入了几个通用的Nuget这个我后期是会日常去维护的。这个就是我们的脚手架了。而且我在GD_Extension中尽量少的使用Godot的Api。基本只使用了Godot Api 的输出语句。所以这个随着Godot 版本的更新基本不需要大改。这个以后就是我们宝贵的Godot资源库了。
http://www.sczhlp.com/news/181959/

相关文章:

  • 国外网站推广平台有哪些公司wordpress video.js
  • 在线学习网站模板wordpress 平衡插件
  • 做网站是用啥软件做的制作婚纱摄影网站管理图
  • 中山快速建站合作asp.net建立网站
  • 英语培训网站建设如何在网站中做内部链接
  • 手机网站优化排名河南建筑材料信息网
  • 网站开发 图片储存网络工程解决方案公司
  • 安徽网新科技怎么建设网站中山企业建网站
  • 网站建设好以后怎么管理外包活加工官方网站
  • 品牌网站建设蔻大蝌蚪电脑培训班一般多少钱
  • 购物网站 页面设计2023引流软件
  • ssh做的大型网站php网页设计完整代码
  • 检察门户网站建设情况做一个app上架需要多少费用
  • 微信公众号登录wordpress网站吗网站界面设计描述
  • 建设网站什么费用小程序可视化开发工具
  • 网站开发 英文文章邯郸市建设局网站2017
  • 做网站的收益淘宝网站建设 深圳
  • 做生意的网站动漫网站建设前期策划
  • 创新突破!天翼云TeleDB数据库通过中国信通院数据库迁移工具专项测试
  • 2025牛客暑期多校训练营4
  • 软件测试进阶之路:2025年测试工程师必须掌握的三大热门领域
  • 实用指南:Qt QEventLoop的使用的一个问题讨论
  • 哪里有做网站的公司网站流量统计
  • 沈阳seo网站推广优化百度权重1是什么意思
  • 科技工作室网站模板最新四川成都2新增确诊
  • 网站开发流程原理电商品牌网站开发运营
  • 西安网站制作中心wordpress 中文cms主题
  • 无锡网站设计公司电话网站建设公司专业网站费用报价
  • 网站空间怎么做做网站的公司简称什么行业
  • wordpress 如何调整seo案例分析方案