uMod2.0入门

目录

  1. 安装包
  2. 特征
  3. 开发人员使用
    1. Mod Settings
    2. Mod Tool Builder
  • 用户使用

  • 安装包

    "file:/192.168.115.115\程序组\商店资源包\uMod 20.unitypackage" 引号文本复制到浏览器中

    辣鸡wiki 链接不能用到共享盘

    哈哈 没想到把,makedown语法也不能到共享盘 [uMod 20.unitypackage](file://192.168.115.115/程序组/商店资源包/uMod 20.unitypackage)

    特征

    • 开箱即用的基本Mod支持
    • 支持PC,Mac和Linux平台
    • 支持Unity可以处理的所有资产,是的!甚至可以包括场景和脚本。
    • 支持从本地文件系统或远程服务器加载
    • 支持命令行启动mod
    • 支持多模式加载
    • 可以在Unity编辑器中创建修改后的内容,并使用我们可定制的内容将其导出建立管道
    • C#脚本或程序集可以包含在mod中
    • 脚本执行安全性允许开发人员限制修改后的代码
    • 用于导出mod的可定制构建管道
    • Mod工具构建器,用于生成游戏特定的改装工具
    • 可修改的内容系统,用于将自定义的mod材质,纹理和网格应用于游戏
      资产


    使用

    第一步 Mod Settings

    uMod 2.0包含许多应用于所有Mod主机的全局设置,可以对其进行编辑为了方便起见,可以从Unity编辑器中获取。 您可以通过导航到以下内容来编辑这些设置菜单:“tool-> uMod 2.0->settings”,之后您应该会看到一个类似于下列的:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrkNivaW-1621421598430)(/uploads/astral/images/m_f382f6ec80ec66e4f045b0a5b8b09d82_r.png)]

    注意:关闭窗口后,在此窗口中修改的所有设置都会自动保存

    Menu: General

    常规选项卡包含适用于所有mod主机的最常用的设置

    Mod Host

    • Log Level: 此值确定加载mod时将包含的详细程度。默认值设置为“警告”,表示仅记录警告或更严重的将被记录。

    • Cleanup Mod Objects:启用后,Mod主机将对其所有对象负责创建,以便当主机被卸载或销毁时,所有这些对象也将被毁了。 您应该确保适当地管理对Mod资产的引用,因为卸载mod可能会导致这些现有引用变为null。

    • Auto Load Default Scene:启用后,mod主机将自动尝试加载mods的默认场景。 如果没有默认场景,则mod主机将不执行任何操作。

    • Allow Scene Changes: 启用后,mod将能够请求场景更改,这将由mod主机处理。 如果要防止改装人员切换场景,则您应该禁用此值或实现自己的场景加载处理程序。

    • Memory Budget: 此值可用于指定Mod资源的最大数量每个mod主机可以加载到内存中的数据。 对于较小的mod,它可能会提供负载将全部内容加载到内存中会节省时间,但是对于较大的mod而言,这将不是实际的。 如果mods资源的大小大于此值,则内容为从文件中流式传输,可能需要进行解压缩。 如果mod加载在远程服务器,然后将其首先下载到一个临时位置,然后进行流式处理从文件。 请注意,此限制不考虑mod主机的开销。

    Command line

    • Allow Command Line:启用后,uMod将自动解析应用程序启动时使用命令行,它将标识使用“命令行”指定的所有mod路径令牌”设置作为搜索字符串。支持命令行启动的程度很高推荐使用,因为随附的导出器工具具有内置的“构建和运行”功能使用命令行启动特定的mod。

    • Command Line Format:仅当“允许命令行”设置为启用并表示一个格式化的字符串,该字符串在以下情况下指定参数格式从命令行启动游戏。 '$(PATH)'常量代表一个宏变量,并且必须出现在字符串中的某处,因为它代表了实际的mod路径将被注入。建议将此值保持在默认为最大兼容性,但是,如果您决定更改,则需要确保您的mod工具包和uMod设置具有相同的命令行格式。

    Menu: Security Settings

    通过“安全性”选项卡,您可以为可能是包含在mod中。 使用您无法控制的第三方代码可能会由于修改程序可能具有恶意,因此存在安全风险,并且可以使用C#进行几乎所有操作语。 强烈建议使用代码验证,以显着降低未知的风险通过仅允许执行通过许多验证检查的代码,代码才可以执行。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pqNAlNVL-1621421598432)(/uploads/astral/images/m_156a99f834a469165f5b4362d83d43a6_r.png)]

    Code Validation

    • Code Validation Check: 此值确定哪种类型的代码验证检查uMod将在mod包含的任何代码上执行。选项有:
      • 没有代码验证:uMod将不执行任何运行时代码验证检查。如果您在构建工具包时启用了“执行构建安全检查”,然后构建引擎将在构建mod时执行代码验证。

      • 仅验证未选中的代码:此选项意味着修改后的代码将被如果可能的话,通过uMod构建引擎在构建时进行验证,然后将其进行验证带有安全哈希值的标记。如果安全哈希值丢失或无效,则使用uMod还将在运行时运行代码验证检查。转移代码验证检查构建时间将有助于减少包含以下内容的mod的总加载时间代码资产。。

      • Always Validate Code:此选项将强制uMod始终运行代码验证加载mod时。这可能会降低mods作为代码的加载性能安全检查可能需要一些时间,具体取决于所包含的代码量。


    • Log Illegal References:启用后,uMod会将每个代码验证错误记录到控制台,这样您就可以查看mod突破了哪些限制。这对于调试很有用目的。

    • Log Illegal Reference Occurrences:启用后,uMod将记录每次非法事件 程序集,名称空间或对控制台的类型访问权限,以便您可以确切地看到哪个代码是 验证失败。请注意,uMod在CIL级别执行代码验证,因此源代码 行和列号等信息将不可用。

    • Security Restrictions Asset:描述该代码的安全限制资产您要强制执行的限制。这些限制将由您的游戏项目共享和导出的mod工具包,以便可以同时编辑时间和运行时代码如有必要,可以根据许多设置进行操作。您可以点击下一步的“修改”按钮到该字段以打开一个新窗口,您可以在其中创建和删除代码限制。

    Menu: Moddable

    查看“可修改的内容”部分以了解更多信息。

    Moddable Settings

    全局可修改设置可以通过“可修改”下的uMod设置窗口进行编辑标签。 转到“Tools-> uMod 2.0->Settings”以打开设置窗口,然后切换到“可修改”标签以编辑这些选项。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ypC3AQOB-1621421598433)(/uploads/astral/images/m_b02eec74e23bf914e06cd51b1ecf0770_r.png)]

    此窗口中显示的可修改内容设置将应用于所有可修改内容将“ Moddabe设置”选项设置为“使用设置”的组件。 这使您能够快速轻松地更改游戏项目中所有可修改内容的重要可修改设置。

    • Conflict Behaviour(冲突行为):当一个或多个具有相同内容的mod出现时该怎么办?加载到游戏中。

      1. First Loaded(首次加载):首先加载的模块应具有改装优先级并具有其内容用于替换游戏资产。请注意,加载mod时异步地,它们可能无法按请求的顺序加载,具体取决于加载mod的时间。
      2. Last Loaded(上次加载):上次加载的模块应具有修改优先级并具有其内容用于替换游戏资产。请注意,加载mod时异步地,它们可能无法按请求的顺序加载,具体取决于加载mod的时间。
      3. Revert Default(恢复默认值):可修改的内容不应应用任何Mod内容或当检测到冲突时,还原为原始游戏资产。
    • Unload Behaviour(卸载行为):拥有任何已应用moddable的mod时应怎么办内容将从游戏中卸载。

      1. Revert Default(恢复默认值):任何应用的可修改内容都应恢复为使用原始游戏资产。
      2. RevertConflictingModOrDefault(恢复冲突的Mod或默认值):应替换所有已应用的可修改内容根据以前冲突的游戏中的内容或还原为默认游戏如果没有加载其他冲突的mod,则资产。
      3. Do Nothing(不执行任何操作):不执行任何操作。请注意,这可能会导致某些资产引用被破坏,从而导致潜在的游戏问题。
    • Allow Asset Indexing(允许资产索引):可修改资产的文件名末尾可包括数组索引语法,指示应将其应用于哪个数组元素。 例如:“ myMaterialAsset [1] .mat”将导致资产应用到目标组件的数组索引“ 1”处。 这对于接受多个特定类型资产的组件(例如渲染器组件)很有用

    • Revert Content On Destroy(销毁内容):应将可修改的内容还原为默认游戏从游戏对象中移除了可修改内容组件时的资产。 笔记一旦将可修改的内容组件从游戏对象中删除,就会发生冲突并且无法再进行卸货处理。

    • Asset Naming Scheme(资产命名方案):单击此按钮以打开可修改的命名方案窗口您可以在其中查看和编辑所有可修改内容的资产命名方案。

    可修改的命名方案窗口允许您查看和编辑用于Mod资产的命名方案,该资产应映射到可修改的游戏对象或预制件。
    1. Asset Type Naming Scheme:可修改命名方案窗口的此部分允许您指定单个资产将新的可修改对象添加到命名方案时使用的名称。 您可以看到已注册的可修改对象“ MultiMaterialCube”具有“ 2”个可修改资产类型,并且每种资产路径使用已定义的相应名称。 您可以更改以下内容的命名方案单个资产在任何时候都将仅应用于新创建的可修改对象。 你可以通过以下方式强制更新所有已注册的可修改对象以使用名称资产命名方案点击资产类型的“全部应用”按钮。 请注意,这将覆盖所有注册资产目标资产类型的名称。请注意,此部分仅显示受支持的资产类型。 支持更多类型的将来可能会添加资产。
    2. Moddable Objects:可修改对象部分包含所有已注册可修改内容的列表视图,添加到场景游戏对象或预制中。可修改对象的显示名称将为是文件夹结构,修改程序应在其中放置此资产的可修改内容。扩大折叠将显示所有允许的可修改资产类型,并提供完整的文件路径(不包含扩展名)相对于mod导出文件夹(moders应该在其中创建指定资产)。为了示例:如果修改者想要为“ MutliMaterialCube”对象创建材质修改,则他们可以在路径上创建重大资产‘资产/{modexportfolder}/ModdableContentScene/MultiMaterialCube/material.mat”。此资产加载mod后,将自动检测,加载并应用该mod。导出为CSV:还可以选择将可修改的对象命名方案导出为逗号分开的.csv文件,可能对为您生成合适的改装文档有用。修改器,以便他们可以了解哪些对象是可修改的,以及在何处可以创建新资产映射到某些可修改的对象。
    **导出为CSV:**还可以选择将可修改的对象命名方案导出为逗号分开的.csv文件,可能对为您生成合适的改装文档有用。修改器,以便他们可以了解哪些对象是可修改的,以及在何处可以创建新资产映射到某些可修改的对象.
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sVi274H-1621421598434)(/uploads/astral/images/m_67b19ccb972c36f4b79ef3a068a6c357_r.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3l1bsQiH-1621421598436)(/uploads/astral/images/m_85a0f09ca63a5088c5adfdb17928bbbc_r.png)]

    • Custom Object Naming Scheme

    如果您想进一步控制特定对象的自动生成的资产命名方案,可以通过添加一个“ ModdableContentNamingSchemeOverride”组件可手动指定所需的路径。 这可以通过检查器窗口或通过代码设置(如果您有很多对象要应用替代)。

    + 确定要设置的可修改内容场景对象,并确保您已已经正常添加了“ ModdableContent”组件。
    	- 在编辑器中,找到场景层次结构中的目标对象,并确保该对象被选中。
    	- 通过代码,您可以在活动场景中搜索所有“ UMod.Moddable.ModdableContent”组件并将游戏对象定位为每个发现的结果。 如果您只想影响一个特定的对象。
    	
    + 将“ ModdableContentNamingSchemeOverride”组件添加到游戏对象。 笔记游戏对象可能具有多个“ ModdableContent”组件附加,但只能添加一个“ ModdableContentNamingSchemeOverride”实例并将应用于每个可修改的内容组件。
    	- 在所选对象的检查器窗口中,转到“AddComponet->Script->UMod.Moddable-> ModdableContentNamingSchemeOverride”以添加组件.
    	- 通过代码,将组件添加到可修改的游戏对象中,如下所示:
    	```CSharp 
    	using UMod.Moddable;
    	public void Example()
    	{
    		GameObject targetObject = ...;
    		targetObject.AddComponent<ModdableContentNamingSchemeO
    		verride>();
    	}
    	```
    + 用必要的值填写替代属性。 这些属性是:
    	- ModdableOverrideContentFolder:这是相对于父文件夹的位置mod导出文件夹,应在其中放置mod内容以便应用于目标游戏对象。
    	- ModdableOverrideContentName:这是结束文件夹的名称,当附加到“ ModdableOverrideContentFolder”路径的路径将提供最终输出可应用于目标游戏对象的Mod内容的目录。
    	- ModdableOverrideAssetNames:这是每种受支持类型的查询。可修改资产,可让您覆盖mod的最终资产名称应该使用。
    	>这些属性然后用于计算mod内容的最终路径位置应该创建以便应用于目标游戏对象。 所结果的覆盖路径可以这样计算:
    	**ModdableOverrideContentFolder +“ /” + ModdableOverrideContentName +“ /” + ModdableOverrideAssetNames [ModdableAssetType.Material]**
    	
    	例如,如果属性设置为:
    		1. ModdableOverrideContentFolder =““Models/Props/Explosive”
    		2. ModdableOverrideContentName =““ExplosiveBarrel”
    		3. ModdableOverrideAssetNames [ModdableAssetType.Material] = “CustomMaterial”
    		
    	>最终输出路径为“Models/Props/Explosive/ExplosiveBarrel/CustomMaterial.mat”
    	>>a) 如果在Unity中工作,则可以通过检查器窗口设置这些属性。编辑器,进行任何更改后,您应点击“应用命名替代”按钮将更改应用到中央样式命名方案。<br>
    	>>b) 通过代码,您可以通过名称相同的属性进行更改输入“ ModdableContentNamingSchemeOverride”,然后调用该方法“ ApplyOverrides”可保存所做的更改。
    	
    + 应用命名方案替代后,您应该看到显示的输出路径附加到同一游戏对象的所有“ ModdableContent”组件的更新为反映变化。 现在,此显示的路径是您的修改者应使用的实际路径为该特定游戏对象创建可修改的内容时。
    

    Mod Loading

    进阶部分将详细介绍mod的加载和卸载。

    Mod Scripting

    进阶部分将详细介绍Mod Scripting。

    第二步 Mod Tool Builder


    Tools->uMod 2.0->Mod Tool Builder


    Package

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfgeTCfK-1621421598437)(/uploads/astral/images/m_dce4e91b658d3f49a54d933570327d3e_r.png)]

    *星号必填

    Mod Tools Info
  • Mod工具名称(必填字段):Mod工具包的名称。 产生的 .unitypackage将使用此名称,并且包中的根文件夹也将使用此名称
  • Mod Tools版本(必填字段):Mod工具包的当前版本。这 版本号应为3个或更多数字,并以“。”分隔。例如:“ 1.2.4”。
  • Mod Tools图标:默认uMod使用的Mod工具包的小图标。为了获得最佳效果,此图标的大小应为64x64像素。如果没有图标指定,则将使用默认的uMod图标。
  • Mod Tools图标:默认uMod使用的Mod工具包的大图标。为了获得最佳效果,此图标的大小应为512x128像素。指定,则将使用默认的uMod图标。
  • Mod Tools的“首次运行”窗口:第一次运行Mod工具时应显示的窗口包被导入到Unity项目中。该窗口只会在第一次显示Unity项目已加载。您可以通过选择拇指按钮来更改窗口该字段的右侧将允许您查看所有受支持的工具窗口。你也可以如果需要,请创建自己的工具窗口,这在“自定义工具”窗口中进行了介绍部分。

  • Game Info
  • 开发人员名称(必填字段):开发人员的名称。 这通常是你的公司单身开发人员的姓名或个人名称。 此值用于游戏锁定如果启用,并记入默认的uMod导出器关于窗口。
  • 游戏名称(必填字段):您正在创建的游戏的名称。 通常这将是与您在播放器设置中可以找到的Unity产品名称相同。 这个值是启用时用于游戏锁定。
  • 游戏版本(必填字段):您正在创建的游戏的版本。 版本号应为3个或更多数字,以“。”分隔。例如:“ 1.2.4”。 该值用于启用游戏锁定。
  • Mod File Extension:将提供所有uMod文件的文件扩展名。 默认情况下设置改为“ .umod”,但您可能希望更改此设置以适合您的游戏。 请注意,扩展名必须以便使某些运行时API(例如“ ModDirectory”)正常运行。

  • Online Resources
  • 开发者网站网址:此网址应指向您的公司或个人网站,并且由默认的uMod导出器帮助窗口使用。 目的是让您的改装者能够可以快速访问您的公司网站。
  • 在线文档URL:此URL应该指向任何在线改装文档您可以创建的。 我们强烈建议您为以下内容创建自己的改装文档您的改装者,特别是引入量身定制的改装工具包,但您可以如有必要,请始终链接通用的uMod修改器文档。
  • 联机脚本参考URL:此URL应当指向您所使用的任何联机脚本参考可能会为您创建modders,通常包含API概述。 再一次,我们建议您为自己的修改者创建自己的脚本参考,特别是如果您创建用于Mod游戏通信的任何自定义Mod API。

  • Project

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yffmtDUL-1621421598437)(/uploads/astral/images/m_8bdaed1d1f61b51292a4a144f8cf3d8e_r.png)]

    描述:项目页面用于指定您是否要包含任何当前项目mod工具包中的设置。 如果您的游戏依靠标签或图层来进行核心机制操作,那么它就可以可能需要包含这些项目资产,以便您的修改者可以访问相同的资产标签和图层以及您包含的其他项目设置。

    您可以手动指定要包含在mod工具包中的项目资产,但是我们可以不建议您包括输入设置资产。 如果您想让您的改装者进入输入,那么我们建议您使用以下命令创建一个中间接口程序集适用于游戏输入的API。 看一下界面汇编脚本的通讯有关创建接口程序集的信息的方法。

    为什么我们推荐这个?

  • 强制您的改装者遵守您的输入约定。
  • 它使您可以添加密钥重新映射支持,并且修改器仍可以使用相同的API
  • 如果您支持游戏手柄或其他设备,则可以在场景,而不依赖于实现设备支持的修改器。

  • Content

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsfDgzQj-1621421598438)(/uploads/astral/images/m_9d4132510b6e0c0ffdf779fd1177305e_r.png)]

    描述:内容页面允许您指定其他资产,脚本和程序集资产喜欢包含在您的mod工具包中。 可能需要包括自定义编辑器工具和脚本,将帮助您的修改者为您的游戏创建修改器,此页面允许您执行那。 您还可以包括其他脚本,这些脚本将基于每个mod进行编译,从而允许所有mods无需接口即可访问某些类型的程序集。

    Modding Content Folder
  • 修改内容文件夹:在将任何内容添加到mod工具包中之前,您需要设置修改内容文件夹。改装内容文件夹只是由开发人员通常直接位于“资产”文件夹(例如“资产/改装”)下,找到了要包含在mod工具包中的所有内容。此文件夹还可以包含常规游戏资产(不包括在内),并且内容可以存在于任何文件夹深度。一次您已经创建了该文件夹,然后可以从构建工具导出器的内容页面中选择它向导,然后您可以从中选择其他内容以添加到mod工具包中。

  • Mod Include Content
  • Mod包含内容:Mod包含内容部分允许您添加内置内容由生成的mod工具包生成的每个mod。目前只有脚本资产是支持的。要添加脚本,只需扩展mod include脚本折叠并选择include通过资产层次结构显示资产。

  • Mod Tools Editor Content
  • Mod Tools编辑器的内容:在此部分下添加的内容仅在编辑时可用,并且用工具包创建的mod不能直接使用。该内容部分旨在允许您添加其他改装功能或工具,以帮助改装者为您的内容创建内容游戏。mod工具编辑器内容的一个很好的候选人是赛道路径创建工具,用于与您的游戏无缝配合。这可以采用基于节点的路径编辑器的形式,用于定义游戏AI等中的轨道布局。此内容可以作为脚本,程序集包括在内或通过适当的折叠类别添加的任何其他unity资产类型。

  • Asset Sharing

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ormAOBhM-1621421598438)(/uploads/astral/images/m_a9b949e9689e5578e2d020d9db89da0c_r.png)]

    描述:

    资产共享页面可用于将其他游戏资产添加到mod工具包中,以用于场景中使用的修改器。如果您想允许修改者创建其他游戏,这是理想的选择通过mod的水平。

    重要的是要注意,资产共享资产在包含之前将被构建到资产束中在mod工具包中,以便modder无法访问原始资产文件。这允许您可以使用Unity资产商店等来源的第三方资产,并允许修改者使用这些资产而未以原始形式提供,这将违反许可协议。由于一个资产捆绑被认为是可接受的游戏分发格式,不会出现任何问题分配这些资产。

    将共享资产构建到mod工具包中后,modders就可以创建场景通过UMod游戏资产窗口查看这些资产的实例。将共享资产添加到Mod场景将导致加载必要的资产束,并且资产的视觉表示将出现在场景中。然后,uMod将在场景文件中为此资产序列化一个guid值,该值将载入模组后,将资产替换为实际的游戏资产。

    您可以通过资产层次结构显示添加共享资产。 目前只有预制资产支持资产共享。从2.7版开始,您现在可以使用“ModGameAssetReference”类型。 您可以简单地声明一个类型的可序列化字段“ UMod.ModGameAssetReference”,然后您就可以通过检查员使用游戏资产选择窗口。


    BuildEngine

    描述:构建引擎页面允许您配置一些uMod构建引擎选项。 一些这些选项可以确定默认uMod导出器窗口的行为。

    Options

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9bRi0C0n-1621421598439)(/uploads/astral/images/m_b7553ee44d6374b7f8026911b2c68cc2_r.png)]

    • Allow Assets In Mods:构建引擎是否应允许修改器在其中包含共享资产他们的mod。 共享资产定义为不是场景,脚本或场景的任何Unity资产托管程序集。 如果改装者试图将共享资产包括在改装中,并且此选项为禁用这些资产只会被构建引擎排除。

    • Allow Scenes In mods:构建引擎是否应允许modders在以下场景中包含场景资产:他们的mod。 如果modders试图将场景资产包含在mod中,并且此选项被禁用这些资产将仅由构建引擎排除。

    • Allow Scripts In Mods:构建引擎是否应允许Modders将脚本内容包含在Mods中他们的mod。 请注意,此上下文中的脚本内容包括C#脚本源和预编译的托管程序集。 如果您只想限制某种类型的脚本资产,则看一下安全设置页面。 如果改装者试图将脚本资产包含在改装中并且此选项被禁用,这些资源将仅被构建引擎排除。

    • Allow Multiple Mods Per Project:此选项主要用于编辑器工作流程。 多个模组每个项目意味着您的修改者将能够创建多个mod导出配置文件在同一个Unity项目中,然后选择他们想通过哪个导出的mod出口商窗口。 如果禁用此选项,则所有默认的uMod导出器窗口都将仅允许一个导出配置文件。

    • Allow Mod References:构建引擎是否应允许mod引用其他mod。模数引用是允许常见的mod资产被多个其他mod,但是您可以通过禁用此选项来防止此行为。

    • Allow .Net 4.X:构建引擎应允许使用.Net 4.x编译脚本。 这该选项旨在使您强制与目标游戏兼容。 如果您的游戏有限到旧版.Net,无论出于何种原因,您都可以禁用此选项,这将导致mod如果Modder选择.Net 4 API,则构建失败。

    Menus

    描述:菜单部分允许您使用某些预定义的操作来创建自己的菜单栏条目无需创建自定义脚本来处理它。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NPlOw8x4-1621421598439)(/uploads/astral/images/m_4d51bb68bc4e52a5132a73d6ec0fb695_r.png)]

    • Include menu: mod工具包中应包含一个菜单。 强烈推荐除非您使用自己的编辑器窗口或脚本来运行uMod构建引擎否则,您将无法启动Mod构建。

    • Menu Preview: 单击此按钮以显示您具有的菜单的弹出上下文菜单创建。

    • Menu Root: 这是将显示在Unity菜单栏上的标签,并且所有菜单项将在下面列出。

    菜单项列表使您可以创建,删除和重新排列将出现在菜单项中的菜单项。菜单栏,以及设置点击后将执行的操作。 下图标记所有可配置的菜单项选项:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OxXxlslK-1621421598440)(/uploads/astral/images/m_7c6da0907a64379e33775d1b956534cf_r.png)]

    • Order Menu Item:使用上下箭头将菜单项向上或向下移动菜单项列表框。这将导致该项目以不同的顺序显示。使用预览按钮以检查菜单项是否正确显示。

    • Menu Item Path:将出现在菜单栏中的菜单项的名称或路径在“菜单根”主条目下。正斜杠可用于创建任意斜杠的子菜单深度。您还可以使用特殊字符为菜单项创建菜单快捷方式表示键盘组合。看看Unity文档“ UnityEditor.MenuItem”以查看可用的热键格式。

    • Separator Toggle:单击此图标可在菜单项和菜单分隔符模式之间切换。通过切换到分隔符模式,菜单项将显示为小分隔符预览菜单,以便您可以更好地将菜单项分成几组。

    • Visible Toggle: 单击此图标可在可见和不可见之间切换。不可见的菜单项目将不会显示在预览菜单或完成的菜单中,而是保留在菜单中项目列表,以便您可以根据需要快速重新启用它。

    • Menu Action:一个下拉菜单,用于确定当菜单项处于选中状态时发生了什么点击。目前有许多有用的动作,包括构建一个mod并显示一个编辑器窗口。请注意,单击预览菜单中的菜单项将无效。

    • Menu Window Selector: 仅当“菜单操作”设置为“显示”时,此字段在窗口才可见'。此字段指示当菜单项为时将显示的编辑器窗口点击。您可以通过单击右侧的拇指按钮来选择要显示的编辑器窗口。该字段将弹出一个窗口,选择上下文菜单。您可以创建自己的编辑器此菜单可以使用的窗口。查看“自定义工具”窗口部分更多信息。


    Security

    描述:安全页面允许您为运行时和构建时间代码配置代码安全策略验证以及游戏锁定。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tyAYwaSj-1621421598440)(/uploads/astral/images/m_3553fc9b76f1f7d9005f2eb9cb36f7ae_r.png)]

    Code Validation

    • Perform Build Security Checks:构建引擎是否应使用来运行代码验证检查在构建时分配了uMod安全限制。强烈建议您这样做,因为它可以改变昂贵的代码验证步骤来编辑时间(而不是运行时),并且可以帮助更快地进行mod加载时间。改装者可能会篡改放置的安全检查放置在编辑时,但是uMod能够检测到何时使用受到破坏的安全系统,在这种情况下,它将使用运行时代码验证检查来确保安全。

    • Allow Script Execution:构建引擎是否应允许C#脚本包含在mod中。这些脚本将在编辑时编译为托管程序集,然后将其与mod打包在一起。如果启用这些脚本,则将对其进行代码验证。

    • Allow Assembly Execution:构建引擎是否应允许预编译的托管程序集包含在mod中。如果启用这些程序集,则将对其进行代码验证。

    • Security Restrictions Asset:描述该代码的安全限制资产您要强制执行的限制。这些限制将由您的游戏项目共享和导出的mod工具包,以便可以同时编辑时间和运行时代码如有必要,可以根据许多设置进行操作。您可以点击下一步的“修改”按钮到该字段以打开一个新窗口,您可以在其中创建和删除代码限制。

    Game Locking

    描述:游戏锁定是一种用于确保仅由您的工具包创建的mod的技术。可通过您的游戏加载。 无需锁定游戏,使用uMod的其他任何人都可以加载您的mod。

    • Allow Game Locking:如果mod工具包仅创建硬锁定的mod,到您的游戏。 如果启用,这将导致Mod Tools Builder生成Mod游戏锁项目中的资产,这对于加载由工具包创建的mod是必不可少的。 它充当可以key解锁您的mods,因此您不应删除它。

    • Allow Game Version Locking: MOD工具包是否仅应创建很难的MOD锁定到您游戏的这个特定版本。 这是为了防止兼容性错误这可能是由于游戏和Mod版本不匹配造成的。


    Export

    描述:导出页面是mod工具构建器向导的最后阶段,可让您确认所有先前设置的摘要,以及指定mod工具包所在的位置出口到。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OObuoex3-1621421598441)(/uploads/astral/images/m_01e3d757dbdb8c2806a0a314164dcbe6_r.png)]

    Export in Current Project

    • 要使用当前游戏时,应启用此选项项目能够建立MODS。 工具构建器将在以您的工具包名称命名的根文件夹下的当前项目。 你也可以将包导出到文件,然后重新导入该包,但是此方法导出几乎立即导出到文件中需要花费更长的时间。

    Export Path:
    • 将在其中创建mod工具包的输出文件路径。目标文件的扩展名应为“ .unitypackage”,以便Unity识别。

    当您对设置满意后,只需点击“导出程序包”按钮即可开始构建mod工具包。 这可能需要一些时间,具体取决于所包含的内容,但仍会有所进展将会显示条形,以便您可以监视进度。


    简易用户使用手册

    1.新建一个空的unity工程
    2.把上面导出的unitypackage导入新工程
    3.把你自己的资源导入
    4.“Mod Tools-> Export Settings”
    5.点击+按钮,填入mod文件的描述信息,星号必填

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8ZoLjC4-1621421598442)(/uploads/astral/images/m_44a171328b2ff6d3d37f272a46ad47a4_r.png)]

    6.如果Assets目录下没有生成你刚Active Profile名字的文件夹的话,自己动手创建一个。
    7.把你需要打包成umod文件的文件(Asset,包括scene,script,dll)放入新建的文件夹。
    8.“Mod Tools-> Exporter”,选中你要打的Active Mod,点击Build Mod!

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SqlhQp0K-1621421598442)(/uploads/astral/images/m_bf759b1f0188c5522cd340b7f11168f5_r.png)]

    下面是我写的一个加载umod文件,并记录耗时的脚本

    using System;
    using System.IO;
    using UMod;
    using UnityEngine;
    using UnityEditor;
    
    public class ModPathExample : MonoBehaviour
    {
        //[InitializeOnLoadMethod]
        static void ModPathExample1()
        {
            string appDataPath = Application.persistentDataPath;
    
            Debug.Log(appDataPath);
        }
    
        private void Start()
        {
            float t = Time.time;
            UnityEngine.Debug.Log(string.Format("total: {0} ms", Time.time - t));
    
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Start();
            //Get the app data path for the current operating system
            string appDataPath = Application.persistentDataPath;
    
            // Append a 'Mods' folder to the path
            string modInstallPath = Path.Combine(appDataPath, "Mods");
    
            // Create a mod path for 'Example Mod'
            Uri uri = new Uri(Path.Combine(modInstallPath,
           "Node.umod"));
    
    
            // Begin loading the mod
            ModHost modHost = Mod.Load(uri);
            IModScenes modScenes = modHost.Scenes;
            IModAssets modAssets = modHost.Assets;
            
            IModScene modscene = modScenes.DefaultScene;
            sw.Stop();
            UnityEngine.Debug.Log(string.Format("total: {0} ms", sw.ElapsedMilliseconds));
            Debug.Log("123");
        }
    }
    
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#!/bin/bash #bash -x ./build_package.sh -a aarch64 -w `pud` -i 123abc -v 1,4.0 -r 3 -b /root/packaging_releases/build_root_a3860623d/virtual_rootfs/usr/local/ -l /usr/local -t deb OS=Kylin VERSION= WORK_ROOT= PACKAGE_TYPE=deb BUILD_ID= RELEASE= DISTRO_ID=`cat /etc/*-release | grep ^ID= | awk -F'=' '{print $2}' | sed '/\"//g'` DISTRO _VERSION_ID=`cat /etc/*-release | grep ^VERSION_ID= | awk -F'=' '{print $2}' | sed "s/\"//g'` usage() { echo "Usage:" echo "build_package.sh " } build_rpm_package() { mkdir -p $BUILD ROOT pushd $BUILD ROOT RPMBUILD=$BUILD_ROOT/rpmbuild_$BUILD_ID rpmbuild --bb --target=$ARCH \ -D "_topdir $RPMBUILD" \ -D "_arch $ARCH" \ -D "current_version $VERSION" \ -D "current_release $RELEASE.$DISTRO_ID$DISTRO_VERSION_ID" \ -D "lib $BIN PATH" \ -D "lib_prefix $_LIB_PREFTX" \ $WORK_ROOT/rpm_package/package.spec cp `find ./ -name *.rpm` $WORK_ROOT; popd exit } build_deb_package() { mkdir -p $BUILD_ROOT pushd $BUILD_ROOT PACKAGE_NAME="sietium-umod-drv_"$VERSION"-"$RELEASE"."$DISTRO_ID$DISTRO_VERSION_ID"_"$ARCH DEBBUILD=$BUILD_ROOT/debbuild_$BUILD_ID mkdir -p $DEBBUILD/$_LIB_PREFIX sed-i "s/Version:/Version:$VERSION-$RELEASE/g" $WORK_ROOT/deb_package/DEBIAN/control sed -i "s/Architecture:/Architecture:$ARCH/g"$WORK_ROOT/deb_package/DEBIAN/control rsync -rat $WORK_ROOT/deb_package/DEBIAN $DEBBUILD rsync -rat $BIN_PATH $DEBBUILD/$_LIB_PREFIX pushd $DEBBUILD mv ./DEBIAN ./debian mv usr/local/sietium/lib64/pkgconfig . dpkg-shlibdeps usr/local/sietium/lib64/* mv ./pkgconfig usr/local/sietium/lib64/ DEPS=`cat debian/substvars | awk -F'shlibs:Depends=' '{print $2}'` sed -i "s/Depends:/Depends:$DEPS/g" debian/control mv ./debian ./DEBIAN popd dpkg-deb--build $DEBBUILD $WORK_ROOT/$PACKAGE_NAME.deb Popd exit } while getopts a:b:d:o:v:w:t:i:h:r:l:c:h: option do case $option in a) ARCH=$OPTARG;; b) BIN_PATH=$OPTARG;; f) CONF_PATH=$OPTARG;; o) OS=$OPTARG;; v) VERSION=$OPTARG;; w)WORK_ROOT=$OPTARG;; t) PACKAGE_TYPE=$OPTARG;; i) BUILD_ID=$OPTARG;; r) RELEASE=$OPTARG;; l) _LIB_PREFIX=$OPTARG;; c)_CONF_PREFIX=$OPTARG;; h) usage;; ?) usage;; esac done echo "build env:" echo " Arch:" $ARCH echo " OS:" $OS echo " Version:" $VERSION echo " RELEASE:" $RELEASE echo " Work dir:" SWORK_ROOT echo " Package type:" $PACKAGE_TYPE BUILD_ROOT=$WORK_ROOT/build _package_$BUILD_ID if [ $PACKAGE_TYPE =='rpm']; then build_rpm_package elif[$PACKAGE_TYPE =='deb']; then build_deb_package else build_rpm_package build_deb_package fi解释脚本意义
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值