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

Unity的IFilterBuildAssemblies:深入解析与实用案例

Unity IFilterBuildAssemblies

Unity IFilterBuildAssemblies是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目时自定义哪些程序集需要被包含在构建中,哪些程序集需要被排除在建之外。这个功能可以帮助开发者更好地控制项目的构建过程,减少构建时间和构建大小。在本文中,我们将介绍Unity IFilterBuildAssemblies的使用方法,并提供三个使用例子,帮助读者更好地理解这个功能。

Unity IFilterBuildAssemblies的使用方法

Unity IFilterBuildAssemblies是一个接口,它包含一个名为Filter方法。在这个方法中,我们可以编写我们需要执行的操作,并且可以获取构建报告。下是一个简单的例子,演示了如何在构建项目时自定义哪些程序集需要被包含在构建中,哪些程序集需要被排除在构建外:

using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using System.Collections.Generic;public class BuildHandler : IFilterBuildAssemblies
{public int callbackOrder { get { return 0; } }public void OnBeforeBuild(){// Do nothing}public void OnAfterBuild(){// Do nothing}public string[] OnFilterAssemblies(string[] assemblies){List<string> filteredAssemblies = new List<string>();foreach (string assembly in assemblies){if (assembly.Contains("MyNamespace")){filteredAssemblies.Add(assembly);}}return filteredAssemblies.ToArray();}
}

在这个例子中,我们实现了IFilterBuildAssemblies接口,并重写了它的OnFilterAssemblies方法。在这个方法中,我们首先创建了一个空的List 对象,用于存储需要包含在构建中的程序集。然后,我们遍历所有的程序集,如果程序集的名称包含"MyNamespace",则将其添加到List 对象中。最后,我们将List 对象转换为string[]数组,并返回这个数组。

使用例子

下面是三个使用Unity IFilterBuildAssemblies的例子,每个例子都供了具体的实现。

例子1:只包含指定的程序集

在这个例子中,我们将演示如何在构建项目时只包含指定的程序集。

using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using System.Collections.Generic;public class BuildHandler : IFilterBuildAssemblies
{public int callbackOrder { get { return 0; } }public void OnBeforeBuild(){// Do nothing}public void OnAfterBuild(){// Do nothing}public string[] OnFilterAssemblies(string[] assemblies){List<string> filteredAssemblies = new List<string>();filteredAssemblies.Add("Assembly-CSharp.dll");filteredAssemblies.Add("Assembly-CSharp-firstpass.dll");return filteredAssemblies.ToArray();}
}

在这个例子中,我们实现了IFilterBuildAssemblies接口,并重写了它的OnAssemblies方法。在这个方法中,我们首先创建了一个List 对象,用于存储需要被包含在构建中的程序集。然后,我们将需要被包含在构建中的程序的名称添加到List 对象中。最后,我们将List 对象转换为string[]数组,并返回这个数组。

例子2:除指定的程序集

在这个例子中,我们将演示如何在构建项目时排除指定的程序集。

using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using System.Generic;public class BuildHandler : IFilterBuildAssemblies
{public int callbackOrder { get { return 0; } }public void OnBeforeBuild(){// Do nothing}public void OnAfterBuild(){// Do nothing}public string[] OnFilterAssemblies(string[] assemblies){List<string> filteredAssemblies = new List<string>();foreach (string assembly in assemblies){if (!assembly.Contains("MyNamespace")){filteredAssemblies.Add(assembly);}}return filteredAssemblies.ToArray();}
}

在这个例子中,我们实现了IFilterBuildAssemblies接口,并重写了它的OnFilterAssemblies方法。在这个方法中,我们首先创建了一个空的List 对象,用于存储需要被包含在构建中的程序集。然后,我们遍历所有的程序集,如果程序集的名称不包含"MyNamespace",则将其添加到List 对象中。最后,我们将List 对象转换为string[]数组,并返回这个数组。

例子3:根据平台选择程序集

在这个例子中,我们将演示如何在构建项目时根据平台选择需要被包含在构建中的程序集。

using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using System.Collections.Generic;public class BuildHandler : IFilterBuildAssemblies
{public int callbackOrder { get { return 0; } }public void OnBeforeBuild(){// Do nothing}public void OnAfterBuild(){// Do nothing}public string[] OnFilterAssemblies(string[] assemblies){List<string> filteredAssemblies = new List<string>();if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android){filteredAssemblies.Add("Assembly-CSharp.dll");filteredAssemblies.Add("Assembly-CSharp-firstpass.dll");}else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS){filteredAssemblies.Add("Assembly-CSharp.dll");filteredAssemblies.Add("Assembly-CSharp-firstpass.dll");filteredAssemblies.Add("Assembly-CSharp-iOS.dll");}else{filteredAssemblies.AddRange(assemblies);}return filteredAssemblies.ToArray();}
}

在这个例子中,我们实现了IFilterBuildAssemblies接口,并重写了它的OnFilterAssemblies方法。在这个方法中,我们先创建了一个空的List 对象,用于存储需要被包含在构建中的程序集。然后,我们根据当前的平台选择需要被包含在构建中的程序集。如果当前的平台是Android,则只包含"Assembly-CSharp.dll"和"Assembly-CSharp-firstpass.dll"。如果当前的平台iOS,则包含"Assembly-CSharp.dll"、"Assembly-CSharp-firstpass.dll"和"Assembly-CSharp-iOS.dll"。如果当前的平台不是Android或iOS,则包含所有的程序集。最后,我们将List 对象转换为string[]数组,并返回这个数组。

结论

Unity IFilterBuildAssemblies是一个非常有用的功能,可以帮助开发者更好地控制项目的构建过程,减少构建时间和构建大小。在本文中,我们介绍了Unity IFilterBuildAssemblies的方法,并提供了三个使用例子,帮助读者更好地理解这个功能。希望这篇文章对读者有所帮助。

本文由博客一文多发平台 OpenWrite 发布!

相关文章:

Unity的IFilterBuildAssemblies:深入解析与实用案例

Unity IFilterBuildAssemblies Unity IFilterBuildAssemblies是Unity引擎中的一个非常有用的功能&#xff0c;它可以让开发者在构建项目时自定义哪些程序集需要被包含在构建中&#xff0c;哪些程序集需要被排除在建之外。这个功能可以帮助开发者更好地控制项目的构建过程&…...

分片架构,Redis Cluster 分析

分片架构解决的问题 通过堆机器&#xff0c;提升读写性能&#xff0c;与存储性能 分片架构设计要点 分片规则 选择Cardinality大的作为分片键&#xff0c;尽可能保证数据分布均匀 常见分片键&#xff1a; 基于主键&#xff08;业务型数据&#xff09;&#xff0c;基于时间…...

Linux-0.11 文件系统bitmap.c详解

Linux-0.11 文件系统bitmap.c详解 模块简介 该模块包含了两对函数&#xff0c;第一对是和i节点相关的free_inode()和new_inode()。第二对是和逻辑块相关的free_block()和new_block()。 函数详解 free_block void free_block(int dev, int block)该函数的作用是释放设备dev…...

【Linux】基本指令,拥抱Linux的第一步

[Linux]常见指令 Linux基本指令指令的本质ls指令pwd指令cd指令touch指令mkdir指令(重要)rmdir&&rm指令(重要)man指令&#xff08;重要&#xff09;cp指令&#xff08;重要&#xff09;mv指令&#xff08;重要&#xff09;重定向cat指令more指令less指令&#xff08;重要…...

CTF 2015: Search Engine-fastbin_dup_into_stack

参考&#xff1a; [1]https://gsgx.me/posts/9447-ctf-2015-search-engine-writeup/ [2]https://blog.csdn.net/weixin_38419913/article/details/103238963(掌握利用点&#xff0c;省略各种逆向细节) [3]https://bbs.kanxue.com/thread-267876.htm&#xff08;逆向调试详解&am…...

DRF之全局异常处理

一、REST framework 提供了异常处理&#xff0c;我们可以自定义异常处理函数 使用方式&#xff1a; from rest_framewoork.views import exception_handerdef custom_exception_handler(exc,context):# 先调用REST framework默认的异常处理方法获得标准错误响应对象response …...

AI创作工具的使用体验报告

下面是AI创作工具的使用体验报告&#xff0c;围绕以下三点展开&#xff1a; 一、工具的使用体验如何&#xff1f; CSDN博客AI创作工具是一款非常易用的工具&#xff0c;操作简单&#xff0c;可以很快地开始创建内容。在使用过程中&#xff0c;我发现它的语言模型很智能&#…...

C++算法模板(转自acwing)

快速排序算法模板 —— 模板题 AcWing 785. 快速排序 void quick_sort(int q[], int l, int r) {if (l > r) return;int i l - 1, j r 1, x q[l r >> 1];while (i < j){do i ; while (q[i] < x);do j -- ; while (q[j] > x);if (i < j) swap(q[i],…...

阿里云服务器最新优惠价格及最新收费标准(2023更新)

阿里云服务器收费标准分为包年包月和按量付费两种模式&#xff0c;包年包月是一种先付费后使用的计费方式&#xff0c;按量付费是一种先使用后付费的计费方式。选择包年包月的收费模式&#xff0c;用户可以提前预留资源&#xff0c;同时享受更大的价格优惠&#xff0c;帮您更大…...

React实现监听粘贴事件并获取粘贴板中的截图

目录 监听粘贴事件并获取粘贴板中的截图 TSX中给组件添加监听粘贴事件从粘贴板获取截图文件React监听事件 事件监听绑定的事件函数相关扩展 监听粘贴事件并获取粘贴板中的截图 TSX中给组件添加监听粘贴事件 ? 1 2 3 4 5 6 7 8 9 10 11 const pasteImageRef useRef<HTML…...

ISO_IEC_7816-3

介绍 ISO/IEC 7816 是一系列标准&#xff0c;规定了集成电路卡和此类卡的使用 互换。 这些卡是用于在外部世界和卡中的集成电路之间协商的信息交换的识别卡。 作为信息交换的结果&#xff0c;卡传递信息&#xff08;计算结果、存储的数据&#xff09;和/或修改其内容&#xff0…...

学习C#反射(Reflection)

反射提供描述程序集、模块和类型的对象&#xff08;Type 类型&#xff09;。 可以使用反射动态地创建类型的实例&#xff0c;将类型绑定到现有对象&#xff0c;或从现有对象中获取类型&#xff0c;然后调用其方法或访问器字段和属性。 如果代码中使用了特性(Attribute)&#xf…...

Spring Boot的核心组件和工作原理

引言 Spring Boot是一个快速构建应用程序的框架&#xff0c;通过自动化配置和约定优于配置的原则&#xff0c;可以快速地创建可独立运行的、生产级别的Spring应用程序。Spring Boot的核心组件是自动配置、起步依赖和嵌入式Web服务器。 在本文中&#xff0c;我们将深入了解Spr…...

【指针的深刻理解】

如何看待下面代码中的a变量? #include<stdio.h> int main() {int a 0;//同样的一个a&#xff0c;在不同的表达式中&#xff0c;名称是一样的&#xff0c;但是含义是完全不同的&#xff01;a 10;//使用的是a的空间&#xff1a;左值int b a; //使用的是a的内容&#x…...

lintcode-图的拓扑排序(java)

拓扑排序 拓扑排序-lintcode原题题目介绍解题思路代码演示解题方法二 (参考,不用掌握)前置知识 图的拓扑序和深度优先遍历和广度优先遍历 拓扑排序-lintcode原题 127.拓扑排序-原题链接,可以点进去测试 题目介绍 描述 给定一个有向图&#xff0c;图节点的拓扑排序定义如下: 对…...

【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Rinne Loves Graph

Rinne Loves Graph (nowcoder.com) 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 Island 发生了一场暴乱&#xff01;现在 Rinne 要和 Setsuna 立马到地上世界去。 众所周知&#xff1a;Island 是有一些奇怪的城镇和道路构成的…...

第15章:索引的数据结构

一、为什么使用索引 1.索引是存储引擎用于快速找到记录的一种数据结构。相当于一本书的目录。在进行数据查找时&#xff0c;首先查看查询条件是否命中某条索引&#xff0c;符合则通过索引查找相关数据。如果不符合则需要全表扫描&#xff0c;一条一条查找记录&#xff0c;直到…...

机械师曙光16电脑开机自动蓝屏怎么解决?

机械师曙光16电脑开机自动蓝屏怎么解决&#xff1f;有的用户在使用机械师曙光16电脑的时候&#xff0c;遇到了一些系统问题&#xff0c;导致自己无法正常的开机使用电脑。因为电脑总会变成蓝屏&#xff0c;无法进行任何操作。那么这个情况怎么去进行问题的解决呢&#xff1f;来…...

机器学习_Lasso回归_ElasticNet回归_PolynomialFeatures算法介绍_02---人工智能工作笔记0037

Lasso回归用的是L1正则化可以看到,这里的alpha就是这里的alpha对吧,就是 L1的权重 然后对于ElasticNet回归来说,这里的alpha可以看到是L1权重的超参数对吧,然后这里的p,表示的是 L2正则里面的(1-p)这里 这里要提一下: L1和L2为什么能防止过拟合,它们有什么区别?通过添加…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...