Unity构建详解(2)——SBP的初始设置和脚本编译
【SwitchToBuildPlatform】
核心逻辑如下
EditorUserBuildSettings.SwitchActiveBuildTarget(m_Parameters.Group, m_Parameters.Target);
直接调用切换平台的接口,一般来说,这个步骤不会执行,我们打包时肯定会事先将平台切换好的
【RebuildSpriteAtlasCache】
核心逻辑如下
SpriteAtlasUtility.PackAllAtlases(m_Parameters.Target);
也是直接调用unity提供的接口,重新打包图集,这一步也可以完全自己做,一般会根据项目的实际情况,自己做图集打包。
【BuildPlayerScripts】
编译源代码,生成TypeDB类型的ScriptInfo。TypeDB(类型数据库)是一个用于存储所有类型信息的数据库。
TypeDB包含了Unity中所有的类、结构体、枚举、委托,类的名称、命名空间、父类、成员变量、方法等信息,它是Unity的一个核心组件,可以用来进行反射和序列化等操作,可以通过C#代码或Unity编辑器中的各种工具来访问和修改。
核心代码为
PlayerBuildInterface.CompilePlayerScripts(m_Parameters.GetScriptCompilationSettings(), m_Parameters.ScriptOutputFolder);
这里步骤是可选得,在BuildApp时做,其可以用增量缓存,会生成一系列的文件和Dll,如果有缓存,可以直接读取。输出路径是配置项,默认值为"Library/PlayerScriptAssemblies"。
ScriptAssemblies文件夹中的dll时Editor下用的。
如果要自己编译程序集,也是用该接口。
编译的过程可以做可视化
【使用Native接口】
Native接口的实现都在C++,在C#调用C++用的是P/.Invoke机制。
一般来说参数和返回值都要是Blittable类型,稍微复杂点的会被封装成结构体,只有非常复杂的才会用类。
SBP中有很多调用Native接口的地方,会看到很多参数和返回值都是结构体。
编译脚本时的ScriptCompilationSettings和ScriptCompilationResult都是结构体
相关文章:
Unity构建详解(2)——SBP的初始设置和脚本编译
【SwitchToBuildPlatform】 核心逻辑如下 EditorUserBuildSettings.SwitchActiveBuildTarget(m_Parameters.Group, m_Parameters.Target); 直接调用切换平台的接口,一般来说,这个步骤不会执行,我们打包时肯定会事先将平台切换好的 【Rebu…...
Matlab使用教程(持续更新)
1. Matlab Matlab被广泛的应用在数据分析,汽车仿真,机器人以及医学研究等众多方面。 它可以帮助我们理解研究复杂的系统。 在60年代和70年代,计算机使得科学家和工程师完成了以前不可能进行的计算;但是需要懂得计算机编程。 C…...
管理能力学习笔记一:角色转身
管理能力学习是为了解决角色转身后面临的更多更复杂的的问题。初晋管理层,需要转变工作习惯,学会分配时间。 角色转身 建立“授权”意识 通过匹配工作内容与下属员工能力,分配工作,避免陷入下属能力不足 -> 不愿授权 -> 下…...
Redis面试题 概要
文章目录 Redis面试题 概要缓存穿透布隆过滤器缓存击穿缓存雪崩数据同步数据持久化数据过期策略Redis的数据淘汰策略Redis + Lau 限流Redis面试题 概要 Redis是一个基于 C 语言开发的开源 NoSQL 数据库,Redis 的数据是保存在内存中的(内存数据库,支持持久化),因此读写速度…...
原型,模板,策略,适配器模式
原型模式 原型模式(创建型模式),核心思想就是:基于一个已有的对象复制一个对象出来,通过复制来减少对象的直接创建的成本。 总结一下,原型模式的两种方法,浅拷贝只会复制对象里面的基本数据类型…...
Ollama 在本地快速启动并执行LLM【大语言模型】
文章目录 1. 什么是Ollama?1.1. SDK库1.2. 提供的api服务1.3. [支持的LLM](https://ollama.com/library)2. 如何安装2.1.下载docker镜像2.2. 启动docker容器3. 如何使用?3.1. 如何加载模型3.2. 使用 Ollama CLI 进行推理3.3. 使用 Ollama API 进行推理参考1. 什么是Ollama?...
ubuntu : 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
往后看,90%能解决你的问题 原文链接:学一下 (suxueit.com) 我相信很多人刚使用ubuntu都遇到过这个问题,如果没有遇到,可能是你运气好使用了正确的软件源 libprotobuf-dev : 依赖: zlib1g-dev 但是它将不会被安装 zlib1g-dev : 依…...
瑞芯微RK3576|触觉智能:开启科技新篇章
更多产品详情可关注深圳触觉智能官网! “瑞芯微,创新不止步!”——全新芯片RK3576即将震撼登场。指引科技风潮,创造未来无限可能!这款芯片在瑞芯微不断创新和突破的道路上,不仅是对过往成就的完美延续&…...
Visual Studio 2013 - 清理
Visual Studio 2013 - 清理 1. 清理1.1. 工程清理1.2. 解决方案清理 References 1. 清理 Debug Release 1.1. 工程清理 (right mouse click on the project) -> 清理 1.2. 解决方案清理 (right mouse click on the solution) -> 清理解决方案 References [1] Yongq…...
1、初识JVM
一、JVM是什么? JVM的英文全称是 Java Virtual Machine,其中文译名为Java虚拟机。它在本质上就是是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 JVM执行流程如下 二、JVM有哪些功能? 2.1 解释和运行 对字节码文…...
JavaScript 权威指南第七版(GPT 重译)(七)
第十六章:用 Node 进行服务器端 JavaScript Node 是 JavaScript 与底层操作系统的绑定,使得编写 JavaScript 程序读写文件、执行子进程和在网络上通信成为可能。这使得 Node 作为以下用途变得有用: 现代替代 shell 脚本的方式,不…...
从零开始搭建游戏服务器 第四节 MongoDB引入并实现注册登录
目录 前言正文添加依赖安装MongoDB添加MongoDB相关配置创建MongoContext类尝试初始化DB连接实现注册功能测试注册功能实现登录逻辑测试登录流程 结语下节预告 前言 游戏服务器中, 很重要的一点就是如何保存玩家的游戏数据. 当一个服务端架构趋于稳定且功能全面, 开发者会发现服…...
【Unity】宏定义Scripting Define Symbols
1.宏的用处 我们在使用Unity开发的时候,经常需要根据不同环境执行不同的代码 比如安卓手机和苹果手机获取路径代码 这个时候,宏就派上用场了。 代码示例: //获取路径public string GtePath(){//不同平台,取不同的存储路径string…...
算法 之 排序算法
🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ 🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖 🎉希望我们在一篇篇的文章中能够共同进步!!&…...
Prism:打造WPF项目的MVVM之选,简化开发流程、提高可维护性
概述:探索WPF开发新境界,借助Prism MVVM库,实现模块化、可维护的项目。强大的命令系统、松耦合通信、内置导航,让您的开发更高效、更流畅 在WPF开发中,一个优秀的MVVM库是Prism。以下是Prism的优点以及基本应用示例&a…...
Springboot+vue的四川美食分享网站+数据库+报告+免费远程调试
项目介绍: Springbootvue的四川美食分享网站。Javaee项目,springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的四川美食分享网站,采用M(model)V(view)C(controller&am…...
温湿度项目V1.0——原理图设计
工程 首先要有安装好的Altium Designer软件。新建工程,添加sch、pcb文件;新建原理图库和PCB库。画原理图之前应该要有自己的原理库,可以从自己的原理图库中拖元器件到原理图中。那么就要先画原理图库的元器件,再画该元器件的封装…...
H5 与 App、网页之间的通信
前言 本文整理工作中 H5 嵌入 Android、iOS 与 PC 网页后,如何与各端通信。(提供 H5 端的代码) 环境判断 const ua navigator.userAgent.toLowerCase()const isAndroid /android/i.test(ua)const isIos /iphone|ipod|ios/i.test(ua)cons…...
亚马逊云科技:企业如何开启生成式AI之旅?
如果要评选最近两年全球科技行业最热门的细分领域,那么生成式AI绝对会以遥遥领先的票数成为当仁不让的冠军。 然而眼见生成式AI发展得如火如荼,越来越多的企业却陷入了深深的焦虑:应该如何开启生成式AI之旅?又该怎样搭建大模型&am…...
AMPQ和rabbitMQ
RabbitMQ 的 Channel、Connection、Queue 和 Exchange 都是按照 AMQP(Advanced Message Queuing Protocol)标准实现的。 AMPQ的网络部分 AMQP没有使用HTTP,使用TCP自己实现了应用层协议。 AMQP实现了自己特有的网络帧格式。 一个Connection…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
