首页 > 其他分享 >如何优化Unity发布iOS编译出来的Framework文件过大问题

如何优化Unity发布iOS编译出来的Framework文件过大问题

时间:2024-05-15 10:42:50浏览次数:24  
标签:社区 com iOS Framework Unity UWA uwa4d

1)如何优化Unity发布iOS编译出来的Framework文件过大问题
2)Scriptable Build Pipeline打包Scritptable Object报错
3)APK在OPPO上报编译错误
4)如何在Sequence中模拟我的蓝图


这是第385篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Memory

Q:最近项目是Unity和iOS混合开发,在Unity导出Xcode工程后,编译出Framework集成到iOS主工程里面,在Framework将近90兆,设置代码裁剪和IL2CPP代码成Smaller后能减少十几兆,后面实在优化不下去了,包里也没有资源文件。请问大家一般是怎么减小生成的Framework大小呢?一般导出的Framework都是多大的呢?

欢迎有经验的朋友转至社区交流:
https://answer.uwa4d.com/question/6633620b5ce8a46b00fc4d11


AssetBundle

Q:1. 发生了什么?

给定一个自定义可编写脚本的对象,它有一个类似于MyScriptableObject m_RefObject的字段,创建3个名为A、B、C的对象。

C引用B、B引用A,使用SBP CompatibilityBuildPipeline.BuildAssetBundles将3个资产构建为单独的捆绑包。

加载捆绑包A、B、C,加载资产A、B、C。A和B加载成功,而加载C失败,导致警告“The referenced script on this Behaviour (Game Object '') is missing!'' 并返回 null。

切换到UnityEditor.BuildPipeline.BuildAssetBundles,A、B、C 均加载成功。

2. 如何使用所附示例重现它?

打开示例场景并单击“播放”,控制台将显示资源加载失败,所有行为均在Entry.cs内。

使用版本:
com.unity.scriptablebuildpipeline: 1.20.2/ 1.21.9
Unity 2021.3.25f1

有没有人遇到过这个问题,怎么解决?

A:官方回复:MonoScript Bundle是一个特殊的Bundle,它只包含脚本汇编/类型数据。我们在Addressables中使用它来帮助解决像这样的一些构建依赖问题。如果您只使用ScriptableBuildPipeline而不使用Addressables,那么仍然可以这样做。有一个BuildTask包含在SBP中,叫做CreateMonoScriptBundle,您可以将其添加到构建任务列表。

如果您只使用CompatibilityBuildPipeline,那么您将无法修改构建任务。如果这是您的用例,它是否与本机AssetBundle构建管道(BuildPipeline.BuildAssetBundles)一起工作?除非你有理由使用CompatibilityBuildPipeline API,否则我可能会建议你尝试一下,看看它是否适合你。

感谢打包仔@UWA问答社区提供了回答


Lua

Q:Unity版本2021.3.9f1,插件使用xLua,游戏项目使用Lua语言编写,打出来的APK包,可以安装到小米手机正常,安装到模拟器正常,但是安装到OPPO Reno手机出现编译错误:
xLua exception : error loading module TestLua from CustomLoader, TestLua.lua:1: syntax error near 'Found'

欢迎有经验的朋友转至社区交流:
https://answer.uwa4d.com/question/663562415ce8a46b00fc4d14


Sequence

Q:制作了一个BP蓝图,里面实现了简单的灯光运动的效果。我想在Sequence中也能够模拟这个蓝图实现的效果,但是在Sequence里播放时是无法模拟蓝图的效果的。请问这个要如何解决呢?

 

若视频无法打开,可参考:https://uwa-ducument-img.oss-cn-beijing.aliyuncs.com/Blog/TechSharing_385/1.mp4 

 

A:总体的思路是把蓝图要实现的功能写到一个Function里,将其命名为SETdoSomething,并给这个Function一个输入(任意类型,比如Boolean)。这个Function需要开启Call In Editor。之后写一个doSomething的变量,类型与Function的输入保持一致(案例中为Boolean),该变量开启Expose to Cinematics和小眼睛(Instance Editable)。之后在Track里就可以找到这个Do Something,将其用于关键帧,当它为true时就会调用Function,即实现了Sequence中蓝图功能的模拟。

 

若视频无法打开,可参考:https://uwa-ducument-img.oss-cn-beijing.aliyuncs.com/Blog/TechSharing_385/2.mp4

欢迎有经验的朋友转至社区交流:
https://answer.uwa4d.com/question/6638469b5ce8a46b00fc4d18

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859

标签:社区,com,iOS,Framework,Unity,UWA,uwa4d
From: https://www.cnblogs.com/uwatech/p/18193392

相关文章

  • flutter开发ios15出现name = 'io.flutter.1.raster', stop reason = signal SIGABRT崩
    1.问题描述为了适应ios上架要求,我们项目升级了flutter升级到3.19.6的,但是莫名其妙出现了这个崩溃,最关键的是没有关键的崩溃日志,不管是flutter侧还是ios原生侧都看不出哪行代码引起的2.问题排查首先,通过崩溃日志的关键字'io.flutter.1.raster',其实的raster就是光栅化的意思......
  • Java-SSM-Day02 SpringFramework实战指南
    一、技术体系结构总体技术体系1单一架构:一个项目,一个工程,导出为一个war包,在一个Tomcat上运行。也叫allinone。目前主要应用技术框架为:Spring、SpringMVC、Mybatis分布式架构:一个项目(对应IDEA中的一个project),拆分成很多......
  • IDEA社区版(IDEA Community Edition)创建Springboot父子项目
    1.因为社区办不支持使用springSpringInitializr的方式创建项目,但是我们可以考虑使用别的方式达到效果:创建方式有3种:第一种:使用https://start.spring.io/官方URL创建项目,再导入到IDEACommunityEdition(后面简称:ideaC)。具体使用自行百度。缺点:没办法自定义springboot的......
  • Windows下git配合Unity要设置autocrlf=false
    Unity的.asset文件的换行符一定是Unix(LF)格式的,哪怕在设置里选了用Windows(CRLF)也没用。这个选项貌似只对创建的C#Script有效。这些Unix换行文件提交上去没问题,但如果你想revert或者checkout,就会变成Windows换行,然后如果在Unity里面修改了,哪怕最后实际数值没有变化,也会给你......
  • 【词典】安卓系统使用 深蓝词典(BlueDict) & IOS系统使用 欧路词典(Eudic)
      之前在WindowsMobile中有一款词典软件——MDict(开发者为RaymanZhang,官方网站地址:http://www.octopus-studio.com/),可以支持超多的词典扩展,比如维基百科全书、汉语词典、唐诗宋词词典等。后来安卓版本的同样功能的软件面试,让我更加坚定转投安卓手机,这就是Bluedict,全面兼容M......
  • "Bios"是计算机系统中的基本输入输出系统(Basic Input/Output System),负责在计算机启动
    "Bios"是计算机系统中的基本输入输出系统(BasicInput/OutputSystem),负责在计算机启动时初始化硬件设备、检测系统资源,并启动操作系统。Bios开发人员是负责设计、开发和维护计算机系统的Bios软件的专业人员。工作内容:软件设计和开发:Bios开发人员负责设计和编写Bios软件,包......
  • Entity Framework Core中的并发处理
    1.常见的并发处理策略要了解如何处理并发,就要知道并发的一般处理策略悲观并发策略悲观并发策略,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守悲观的态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观并发策略大多数......
  • axios无法加载响应数据:no data found for resource with given identifier
    做一个demo,springboot写好了接口,postman请求也没问题,如下:但是axios请求时,却发生了问题:查了一圈,没发现啥问题,又想起来看下控制台信息跨域的问题?网上也有这么说的,抱着试试的态度在controller上增加了跨域的注解@CrossOrigin重新运行,页面刷新,ok~......
  • Django - Rest Framework 框架
    目录DRF的安装与配置序列化类SerializerDRF的安装与配置为了简化API的开发过程,我们可以使用DjangoRestFramework框架实现API开发。使用框架开发不仅能减少代码冗余,还可以规范代码的编写格式,这对企业级开发来说很有必要,毕竟每个开发人员的编程风格存在一定的差异,开发规范可......
  • Unity2D 模拟手柄实现玩家移动
    1,创建控制器UI2,挂载脚本3,脚本编写基本要素[Tooltip("玩家游戏体")]publicRigidbody2Dplayer;[Tooltip("玩家速度")]publicfloatspeed=1f;[Tooltip("玩家动画")]publicAnimatoranimator;publicenumMode{BU......