
在Unity中使用CommunityToolkit.Mvvm
本文介绍了如何在 Unity 中使用 CommunityToolkit.Mvvm 工具包,包括工具包的简介、在 Unity 中的应用、源生成器的使用方法,以及一个将 MVVM 模式引入 Unity UI Toolkit 的开源项目。
1. CommunityToolkit.Mvvm 工具包简介
CommunityToolkit.Mvvm 包(又名 MVVM 工具包,以前称为 Microsoft.Toolkit.Mvvm)是一个现代、快速和模块化的 MVVM 库。MVVM Toolkit 由 Microsoft 维护和发布,是 .NET Foundation 的一部分。关于此工具包的教程网上有很多,这里不多赘述。
2. Unity与CommunityToolkit.Mvvm
2.1 为何要在Unity中使用CommunityToolkit.Mvvm?
简化工作流程,不重复造轮子。虽然此工具包不是专门设计给Unity使用的,但是有一定的通用性,可以为那些想在Unity中使用Mvvm设计的开发者提供了便利,可以在此工具包的基础上进行拓展。尤其是工具包自带的源生成器的,可以避免编写很多重复性代码。
2.2 如何在Unity中使用CommunityToolkit.Mvvm?
由于Unity不能直接安装Nugut包,使用得手动导入dll文件,所以得先在Nuget上下载好对应版本的压缩包。
下载好后,将.nupkg的后缀改为.zip,然后直接解压,得到如下目录结构
在lib文件夹下有不同目标框架的dll文件,Unity要用的是dll目标框架是netstandard,至于是netstandard2.0还是netstandard2.1,就看Unity的版本了,将.dll文件拖入Unity中,此时会产生报错,因为Mvvm的依赖项没有导入Unity,所以按照上面的方法来下载其他的依赖项导入Unity。
现在就可以在Unity中使用CommunityToolkit.Mvvm了。
3. 在Unity中使用CommunityToolkit.Mvvm的源生成器
3.1 源生成器是什么?
C# 的源生成器(Source Generators)是一种强大的编程工具,它允许开发者在编译时自动生成 C# 代码。源生成器可以基于特定的输入(如属性、接口、类等)生成新的代码,从而简化开发流程、提高代码的可维护性和可扩展性。源生成器是 Roslyn 编译器的一部分,它在编译过程中运行。开发者可以编写源生成器代码,定义如何根据输入生成新的代码。这些生成的代码会被编译器直接编译成最终的程序集。
3.2 如何使用CommunityToolkit.Mvvm的源生成器?
要想使用CommunityToolkit.Mvvm的源生成器,首先要满足以下条件:
- Unity 2022.3 及以上
- CommunityToolkit.Mvvm 8.0 及以上
- 使用Unity支持的IDE (Visual Studio 和 JetBrains Rider)
然后再上面下载的Mvvm包中,找到analyzers文件夹,然后找到dotnet\roslyn4.0\cs\CommunityToolkit.Mvvm.SourceGenerators.dll,将这个dll拖入Unity。
(注:因为Mvvm使用的Roslyn Api最低为4.0,所以Roslyn Api版本较低的Unity版本无法使用Mvvm的源生成器。源生成器与Mvvm工具包的可以分离使用,就算使用不了源生成器,也可以单独使用Mvvm工具包,源生成器只是提供了便利性。)
然后在 Select platforms for plugin 中禁用 Any Platform,转到 Include Platforms 并禁用 Editor 和 Standalone。最后打开 资产标签(Asset Labels) 子菜单。创建并分配一个名为 RoslynAnalyzer 的新标签。在 Asset Labels 子菜单中的文本输入窗口中输入 “RoslynAnalyzer”。此标签必须完全匹配,并且区分大小写。
这样就可以在Unity中使用Mvvm的源生成器了。
4. CommunityToolkit.Mvvm在Unity中的一些应用
MVVM Toolkit for Unity UI Toolkit
MVVM Toolkit for Unity UI Toolkit 是一个旨在将 Model-View-ViewModel (MVVM) 模式引入 Unity 的 UI Toolkit 的开源项目。该项目的主要目标是提供一个工具包,使得开发者能够更高效地使用 MVVM 模式来构建 Unity 应用程序的用户界面。
5. 结语
最近接触到了在Unity中实现Mvc,Mvvm的一些问题,然后就做了一下相关的研究,之后发现微软官方的这个Mvvm的框架,用了一下后发现挺方便的,然后发现网上没有导入Unity的相关的教程,所以想着分享一下,这其中踩的坑还是不少的,避免大家和我一样踩坑。最后,鉴于本人能力所限,若文中存在任何疏漏或不当之处,恳请不吝赐教,以便我及时修正。
更多推荐
所有评论(0)