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

网站开发设计工程师岗位职责站长交流平台

网站开发设计工程师岗位职责,站长交流平台,对网站开发流程的了解,公司注销的详细流程文章目录 前言GodotProjectDir is null解决方法解决警告问题根本解决代码问题测试引用其实其它库的输出路径无所谓。 工程化范例环境命名规范Nuget项目结构架构代码ISceneModelIOC服务 测试GD_Extension 通用扩展TestUtils GD_ProgramTestServiceMainSceneModel Godot对应的脚本…

文章目录

  • 前言
  • GodotProjectDir is null
  • 解决方法
    • 解决警告问题
    • 根本解决代码问题
    • 测试引用
    • 其实其它库的输出路径无所谓。
  • 工程化范例
    • 环境
    • 命名规范
    • Nuget
    • 项目结构
    • 架构代码
      • ISceneModel
      • IOC服务
    • 测试
      • GD_Extension 通用扩展
        • TestUtils
      • GD_Program
        • TestService
        • MainSceneModel
      • Godot对应的脚本实体
    • 测试
  • 总结

前言

Godot 项目工程化上有一朵乌云,我看Godot的Visual Studio 项目的时候,发现如果是手动新建项目导入Godot包,会导致编译的warning,这个虽然不影响正常运行,但是有warining还是不不爽,这次彻底解决他。

GodotProjectDir is null

出现这个问题的原因是,我想分项目开发

在这里插入图片描述
然后会报warning
在这里插入图片描述
所以我之前的项目封装,是放在一个文件家里的,非常的丑陋
在这里插入图片描述

解决方法

先把这三个先装上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解决警告问题

GitHub上面找了一圈,找到了解决方案

C# Godot project with MSTest - Error: Generator ‘ScriptPathAttributeGenerator’ failed to generate source. #87753

在这里插入图片描述
这个是解决警告问题。

<PropertyGroup><IsGodotToolsProject>true</IsGodotToolsProject>
</PropertyGroup>

根本解决代码问题

添加输出路径

$(GodotProjectDir).godot\mono\temp\bin\

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  <PropertyGroup><GodotProjectDir>../Godot/</GodotProjectDir></PropertyGroup>

在这里插入图片描述

测试引用

外面这里做一个做简单的测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其实其它库的输出路径无所谓。

我们看这两个项目的输出路径
在这里插入图片描述

1>------ 已启动全部重新生成: 项目: ClassLibrary1, 配置: Debug Any CPU ------
已还原 D:\workspace\program\Godot Game\Train\Test18\Godot\Test18.csproj (用时 12 毫秒)。
已还原 D:\workspace\program\Godot Game\Train\Test18\ClassLibrary1\ClassLibrary1.csproj (用时 16 毫秒)。
1>ClassLibrary1 -> D:\workspace\program\Godot Game\Train\Test18\Godot\.godot\mono\temp\bin\Debug\net6.0\ClassLibrary1.dll
2>------ 已启动全部重新生成: 项目: Test18, 配置: Debug Any CPU ------
2>Test18 -> D:\workspace\program\Godot Game\Train\Test18\Godot\.godot\mono\temp\bin\Debug\Test18.dll
========== “全部重新生成”: 2 成功,0 失败,0已跳过 ==========
========== 重新生成 于 0:09 完成,耗时 01.830 秒 ==========

其实只要Godot的输出路径是对的就可以了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工程化范例

既然已经成功可以项目分离了,我就做个我心中的工程化范例好了

环境

  • Godot 4.2.1
  • .net core 8.0(需要手动更改)
  • window10
  • visual studio 2022

命名规范

在这里插入图片描述
在这里插入图片描述

Nuget

在这里插入图片描述

项目结构

在这里插入图片描述
依赖关系,从底层开始

Godot_Extension->Godot_Program->Godot

架构代码

架构代码主要是在GD_Program里面。因为IOC容器时在GD_Program里面。

ISceneModel

/// <summary>
/// SceneModel的基类
/// </summary>
public abstract class ISceneModel
{/// <summary>/// 挂载场景,强制Node2D/// </summary>public Node2D? Sence { get; set; }/// <summary>/// 打包场景,用于生成/// </summary>public PackedScene? PackedScene { get; set; }/// <summary>/// 重载Ready事件/// </summary>public abstract void Ready();/// <summary>/// 重载Process事件/// </summary>/// <param name="delta"></param>public abstract void Process(double delta);/// <summary>/// 方便加载场景/// </summary>/// <param name="sceneName"></param>public virtual void SetPackedScene(string sceneName){var targetName = sceneName.Replace("Scene", "");var url = $"res://Scenes//{targetName}.tscn";GD.Print($"加载PackedScene,{sceneName}:{url}");PackedScene = ResourceLoader.Load<PackedScene>(url);}}

IOC服务

 public class Program{/// <summary>/// IOC容器/// </summary>public static IServiceProvider Services = ConfigureServices();/// <summary>/// Configures the services for the application./// </summary>private static IServiceProvider ConfigureServices(){var builder = new ServiceCollection();AddServices(builder);AddSceneModel(builder);return builder.BuildServiceProvider();}/// <summary>/// 添加服务,应以Singleton形式添加/// </summary>/// <param name="service"></param>public static void AddServices(ServiceCollection builder){builder.AddSingleton<TestService>();}/// <summary>/// 添加SceneModel,应以Transient添加/// </summary>/// <param name="service"></param>public static void AddSceneModel(ServiceCollection builder){//比如//builder.AddTransient<MainSceneModel>();}}

测试

GD_Extension 通用扩展

TestUtils

测试类

 public class TestUtils{public TestUtils(){}public void Test(){GD.Print("我是Utils方法");}}

GD_Program

TestService
public class TestService
{public TestService() { }public void Test(){GD.Print("我是TestService方法");}
}
MainSceneModel
public class MainSceneModel : ISceneModel
{private TestService testService;private TestUtils testUtils = new TestUtils();public MainSceneModel(TestService testService){this.testService = testService;}public override void Process(double delta){}public override void Ready(){GD.Print("Hello Godot!");//在Ready中测试IOCtestService.Test();testUtils.Test();}
}

Godot对应的脚本实体

public partial class MainScene : Node2D
{public MainSceneModel Model { get; set; }public MainScene(){Model = Program.Services.GetService<MainSceneModel>();Model.Sence = this;Model.SetPackedScene(nameof(MainScene));}public override void _Ready(){Model.Ready();base._Ready();}public override void _Process(double delta){base._Process(delta);}
}

测试

在这里插入图片描述

在这里插入图片描述

总结

看来确实是设置IsGodotToolsProject就可以用了,这样我们终于能标准化开发Godot项目了

http://www.15wanjia.com/news/182306.html

相关文章:

  • 网站制作源码php做购物网站
  • 英文网站如何做建设银行山东 2015招聘网站
  • vs中做网站设置背景图片广东省白云区属于哪个市
  • 做网站需要买服务器网站建设时如何选择合适的服务器
  • 织梦网站 伪静态很有质感的网站
  • 网站策划案模板网站开发费属于无形资产
  • 公司网站制作专业公司制作视频的软件哪个好
  • 傻瓜式做网站软件云主机可以放多少网站
  • 不一样的婚恋网站怎么做海外微网站建设
  • 北京网站制作工作室模板网站哪个平台好
  • 上海做网站大的公司有哪些南阳优化网站排名
  • 做ps的网站有哪些功能吗做推广网站那里好
  • 网站建设商平面设计模板
  • 网站开发技术文章桓台网站制作
  • seo网站设计费用惠州市做网站的公司
  • 企业微网站开发西安响应式网站建设
  • 网站制作中需要注意的地方wordpress tag标签页
  • 微网站如何做微信支付宝支付宜春房产网
  • 网站建设售后服务安全维护成都易锐互动科技有限公司
  • 帝国做的网站怎么上传图片fc网页游戏排行榜
  • 公司网站建设开源平台有没有做任务拿佣金的网站
  • 芙蓉区网站建设公司888集团浏览器app
  • 织梦教育网站模板软文推广发布
  • i5 7500网站开发做外国网站
  • 天津企业模板建站哪个好网络营销课程设计总结
  • wordpress虚化主题郑州网站关键词优化公司
  • 怎样帮拍卖网站做策划装修设计公司资质
  • 柳州住房和城乡建设厅网站网站开发的报价
  • 东源县住房和城乡建设部网站wordpress的用户注册
  • 网站建设口号平面设计主要是干嘛的