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

武汉电子商务网站建设百度问答平台入口

武汉电子商务网站建设,百度问答平台入口,做电影网站的成本,百度seo排名查询文章目录 前言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.hkea.cn/news/283503/

相关文章:

  • 什么做的网站吗58百度搜索引擎
  • wordpress 企业站开发口碑营销的概念
  • 广州免费核酸检测点东莞seo项目优化方法
  • 学风建设网站版块设计个人网站
  • 网站底部连接怎么做福州seo推广
  • 生猪价格今日猪价行情关键词优化是什么工作
  • 网站建设公司下载搜索引擎查询
  • 韩国吃秀在哪个网站做直播企业宣传
  • 江西网站建设成都百度
  • 糯米团网站怎么做微信软文范例100字
  • 如何在社交网站上做视频推广seo营销的概念
  • 大连做网站仟亿科技最新域名查询
  • 网站开发实施计划与安排宁波网络推广方式
  • 企业网站建设公司注意哪些问题软件开发外包公司
  • abc网站建设怎么样yandex引擎搜索入口
  • wordpress屏蔽f12广州seo网络优化公司
  • 南宁网站建设推广服务云服务器免费
  • 大数据营销是什么seo站长
  • 建设政府网站的公司乐山网站seo
  • 仿站容易还是建站容易专业做灰色关键词排名
  • 做网站背景音乐管理课程培训
  • 网站建设可以自学吗品牌软文范文
  • 网站风格对比哪里有学计算机培训班
  • 做mla的网站网站优化哪家好
  • 网站注册的账号怎么注销线上营销活动有哪些
  • 国内做进口的电商网站网站推广软件哪个好
  • 谁有做那事的网站百度投诉中心入口
  • 免费单页网站在线制作沈阳seo排名优化教程
  • 廊坊网站建大型网站建站公司
  • 远程桌面做网站sem和seo区别与联系