1.UnityModManager的源码初次使用
2.编程工具篇06编译OpenCV+opencv_contrib
3.C#/Unity3D 入门 SourceGenerator
4.Unity引擎类游戏MOD制作通用教程
5.Unity加密Assembly-CSharp.dll
UnityModManager的初次使用
作为游戏爱好者兼程序员,游戏修改技术不可或缺,下载基础CE是源码入门必备。在探索Unity引擎类游戏修改时,下载曾使用过github.com/HearthSim/UnityModManager等通用解决方案,源码但开发体验并不理想。下载倍量指标源码后来发现github.com/newman/UnityModManager提供了更佳的源码体验,这便是下载我的新旅程。
具体操作流程如下:首先,源码我将Assembly-CSharp.dll进行反编译,下载使用dotPeek工具,源码导出便于查找的下载工程。接着,源码根据修改需求,下载在代码中查找关键部分。源码例如,为了修改游戏保存机制,我找到了相关代码片段。
代码中提到,嗜血印游戏是通过调用两个函数实现保存功能的,理论上,我们可以直接调用这些函数来实现自定义的买点选股百分百指标源码保存操作。之后,我创建了一个mod工程,并在编译过程中遇到了一些错误。在Stack Overflow上找到了解决方案,成功解决了问题。
接下来,我按照官方文档的指引安装了mod,然后启动游戏进行测试。在尝试了“立即存档”的功能后,我发现成功地进行了存档操作,这证实了我的修改生效。此外,我了解到通过分析源代码,可以探索更多功能,比如通过HeroProperty.SaveSceneName(this.cjname)来切换场景等。这些都为我提供了无限可能的扩展空间。
整个过程中,我将所学所用记录下来,并分享到了代码库WingGao/WingUnityMods中,希望能为有相似需求的开发者提供一些参考和帮助。
编程工具篇编译OpenCV+opencv_contrib
在进行Unity:从零开始搞AR教程时,通达信红色三角形公式源码我们需要集成ArUco功能,这就需要将opencv_contrib模块与opencv进行编译。以下是详细的编译步骤: 首先,访问CMake官网下载最新版本(如cmake-3..0-rc1-windows-x_.msi)并安装。 然后,去GitHub下载OpenCV(选择4.5.3版本)和opencv_contrib的源码,链接分别为:opencv-4.5.3-vc_vc.exe
Source code (zip)
下载后解压OpenCV和opencv_contrib的源码包。 接下来,使用CMake进行编译。在CMake的配置过程中,选择Visual Studio (根据你的系统调整),配置路径为opencv源代码目录和你想要生成二进制文件的位置。确保勾选"BUILD_opencv_world",并输入"OPENCV_EXTRA_MODULES_PATH"(如果有需要)。点击Configure,然后Generate,生成过程完成后进入build目录。 在build目录中,打开OpenCV.sln文件,选择“批生成”,勾选"ALL_BUILD"和"INSTALL",25的源码用八位二进制数最后点击生成。编译完成后,头文件和动态库会在Install文件夹中找到。 最后一步,如果你已经在Windows系统上配置过OpenCV环境(参阅编程工具篇),则无需重复,直接使用生成的环境变量即可。如果之前未配置,建议参考相关教程进行设置或更新。C#/Unity3D 入门 SourceGenerator
C# Source Generators是一种在编译时生成额外C#代码的机制,旨在简化代码生成和提高性能。它们只添加代码,不修改已有代码,确保安全。下面将引导您如何在Unity中使用Source Generators以及它们的基本概念和API。
在Unity项目中使用Source Generators并不推荐,可新建一个控制台项目存放Source Generators代码。选择.NET Standard 2.0作为项目类型,注意目前只支持此版本。打开项目文件.csproj,添加`true`标签。三国战纪h5服务端源码安装所需的NuGet包,确保版本兼容,目前Unity中仅支持3.8.0。
在生成器项目中,创建新的类,并添加`Generator`或`Generator[LanguageName.CSharp]`特性。实现`ISourceGenerator`接口。避免详细讨论源生成器API,后续会提供更详细的说明。遇到警告时,检查Roslyn编译器版本,确保符合NuGet包要求,可更新Visual Studio或降低版本。在VS中切换到发布模式,生成或重新生成项目,得到生成器dll文件,只拷贝此文件至Unity中,注意避免生成器dll进入包中。
在VS中添加内置的RoslynAnalyzer标签,并等待编译,源生成器将出现在项目中的引用->分析器列表中。在C#控制台项目里,直接添加源生成器引用,并手动补上`OutItemType`和`ReferenceOutputAssembly`属性。配置源生成器项目以在生成后自动拷贝到特定目录,使用bat脚本实现。
源生成器入门包括概述、表达式、语句、命名空间和引用的基本概念。了解这些概念有助于掌握源生成器的使用。初始化方法`Initialize`主要注册`SyntaxReceiver`以遍历语法节点,执行方法`Execute`则具体编写生成过程,围绕`context`进行操作。理解`SyntaxReceiver`、`context.AdditionalFiles`、`context.ParseOptions`、`context.AnalyzerConfigOptions`和`context.Compilation`属性有助于实现源生成器的功能。使用语法树(Syntax Tree)构建和操作代码是核心任务,通过查找和手动创建节点,将生成的源代码加入上下文参与编译。
若担心语法树构建过程复杂,可采用更简单的字符串拼接方式生成代码,避免名称冲突时使用`global::System.Buffers`进行引用,以防止与其他代码冲突。通过逐步学习和实践,源生成器将帮助您更高效地管理C#代码生成任务。
Unity引擎类游戏MOD制作通用教程
本教程旨在为Unity引擎类游戏MOD制作提供全面指导。以下将分五个部分详细介绍: 第一部分:必备工具软件Visual Studio :提供C++、C#语言开发环境。
dotPeek:.NET框架反编译工具,助于理解游戏业务逻辑。
UtralEdit或EditPlus:文本编辑工具,用于修改反编译文件。
上述工具功能概述如下:dotPeek将游戏文件Assembly-CSharp.dll反编译为Visual Studio 可编辑的.NET项目。
Visual Studio 用于查看反编译后源代码,理解游戏逻辑。
UtralEdit或EditPlus用于修改反编译后的Assembly-CSharp.il文件。
第二部分:DLL文件的反编译与重编译 1. 打开dotPeek,导入Assembly-CSharp.dll并导出为VS项目。2. 创建目录结构,复制Assembly-CSharp.dll至E:\Decompile\DLL。
3. 使用VS命令生成Assembly-CSharp.il文件。
4. 修改Assembly-CSharp.il后,重新编译为新Assembly-CSharp.dll。
5. 将新Assembly-CSharp.dll放置于游戏目录下的XXXX_Data\Managed目录,完成MOD制作。
第三部分:IL文件的修改 核心在于修改游戏逻辑。以修改角色负重值(倍)为例,步骤如下:在VS中搜索GetHeavy方法,标记关键代码。
使用文本编辑器修改Assembly-CSharp.il,替换指定代码。
保存文件并重新编译。
使用dotPeek验证修改效果。
第四部分:IL语言相关 IL是.NET平台的中间语言,由编译器转换为最终可执行代码。使用自定义IL帮助命令查询指令。解压工具,运行帮助命令显示详细信息。
配置文件记录指令与示例。
第五部分:MOD制作展望 未来工具可能包括:通用控制台插件DLL,兼容各种Unity游戏。
Java扩展的file命令,自动化替换Assembly-CSharp.il文件。
本教程旨在分享Unity引擎类游戏MOD制作流程及工具,欢迎广大玩家及开发者参与讨论。Unity加密Assembly-CSharp.dll
项目中的cs代码被打包进Assembly-CSharp.dll中,并通过Mono调用。项目的加密主要针对Assembly-CSharp.dll,加载时进行解密。采用xz库对Assembly-CSharp.dll进行加密和压缩后移位,解密过程则相反。加解密算法已定义好。
在Unity-Technologies/mono中实现解密。首先,从对应当前项目版本的mono源码中获取。然后,重新生成针对特定架构(如armeabi-v7a、x)的libmono.so。解密算法需应用在mono/metadata/image.c中的mono_image_open_from_data_with_name函数。生成libmono.so后,每次打包替换工程中的libmono.so。
生成libmono.so的步骤包括安装工具、修改源码、执行脚本生成so文件。注意优化选项,如使用-g去掉debug符号、--gc-sections去掉无用代码。优化后,so文件尺寸减小,性能提升。编译选项影响so文件是否可启动和性能。
加密过程为:每次打包后,都需要重新加密Assembly-CSharp.dll。编写加密工具,每次Unity导出Android工程或反编译apk包后,对Assembly-CSharp.dll进行加密。使用xz库进行压缩,确保文件体积减小。