Windows下Unity编译iOS应用:脚本编译指南

脚本编译

在编辑器下,每次修改完代码后,就会自动开始编译,最终所有的代码将编译成DLL文件。DLL文件最终将编译在…/Library/ScriptAssemblies目录下,一共是4个DLL文件:

windows unity 编译ios app unity脚本编译_跨平台

编译规则

windows unity 编译ios app unity脚本编译_无法访问_02


脚本分为运行时脚本和编辑时脚本两大类,只有运行时脚本会被编译进游戏包中。脚本的存放目录决定了它将编译在哪个DLL文件中。一般最后编译Editor目录下的脚本。

DLL的编译顺序为:Assembly-CSharp-firstpass.dll()>Assembly-CSharp-Editor-firstpass.dll()

Assembly-CSharp.dll()>Assembly-CSharp-Editor.dll()。其中先编译的脚本无法访问后编译的脚本。

优化编译

游戏代码可以大致分为两类:框架代码和逻辑性代码。
框架代码一旦建立的较为完善后,就不需要一直修改,也不需要访问逻辑性代码了。
逻辑性代码的修改频率就要大得多。
使用我们可以把框架类代码放在Plugins目录下,这样如果修改非Plugins文件目录下的;逻辑性代码,就不会额外编译Plugins目录下的代码了。
如果代码量非常大的时候,上面这样的方法依旧会造成编译慢的问题,就可以把部分CS代码预先编译成DLL来加速编译。

编译DLL

.NET可以把C/C++编译进DLL,但是这会导致有些平台无法识别,此时如果编译DLL时只能编译C#代码,则需要爱macOS系统中打开终端,输入编译指令,DLL编译完成后直接拖到项目中去就可以了:

登录后复制

mac -r:/Applications/unity/unity.app/Contents/Managed/UnityEngine.dll
    -target:library  -out:test.dll  *.cs
    

UnityEngine.dll 编译所依赖的DLL文件
-target:library 生成Library类型
-out:test.dll 最终生成DLl的保存目录
*
.cs 表示当前目录下所以的C#代码,如果有多个目录多个文件,可以空格分开。

脚本的跨平台:

Unity编辑器只支持Windows、macOS和Linux这三个平台,代码大部分是由C#编写的并编译在UnityEditor.dll中,通过Mono实现跨平台。
其中,底层渲染方法并不是使用C#来调用的,Unity只是把C#的接口封装到了UnityEngine.dll中。至于更底层的内部实现,则是由这个DLL再去调用C++来完成的。
对于不同的平台,编译C++的方式是不同的,从而实现了跨平台。例如:Android品台需要编译成 .so,IOS需要编译在.a中。
现在的Unity还支持IL2CPP,它可以把DLL代码转成C++来执行,从而提高效率。
可以通过反编译UnityEngine,dll和UnityEditor.dll来查看这一过程的实现。

打印日记

一般使用Debug来打印日志:

登录后复制

Debug.Log{“Log”}
Debug.Log{“LogError”}
Debug.Log{“LogWarning”}

在开发阶段,多打印可以了解程序行为。但是在发布后,要把日志关闭,不然会造成额外的开销。可以使用下面的代码,可以在初始化的地方设置条件编译,在非编译的模式下运行时,则关闭掉所有的日志和输出:

登录后复制

#if !UNITY_EDITOR
	Debug.unityLogger.logEnabled=false;
#endif


               

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空