-
相比Mono, 代码生成有很大的提高
-
可以调试生成的C ++代码
-
可以启用引擎代码剥离(Engine code stripping)来减少代码的大小
-
程序的运行效率比Mono高,运行速度快
-
多平台移植非常方便
-
相比Mono构建应用慢
-
只支持AOT(Ahead of Time)编译
IL2CPP概括:
-
Mono将c#翻译成IL
-
IL2CPP得到IL转变为C++代码
-
再由各个平台C++编译器编译成可执行机器码
Mono跨平台ILIntermediate Language,中间语言,面向对象的汇编语言工作流通过C#编译器mcs,将C#编译为IL(中间语言,byte code)通过Mono运行时中的编译器将IL编译成对应平台的原生码IL三种转译方式即时编译(Just in time,JIT):程序运行过程中,将CIL的byte code转译为目标平台的原生码。提前编译(Ahead of time,AOT):程序运行之前,将.exe或.dll文件中的CIL的byte code部分转译为目标平台的原生码
场景资源管理器:用于遍历场景的变换层次结构的简单菜单。
GameObject Inspector :各种有用的工具,用于查看和操纵GameObject,类似于您在编辑器中可以执行的操作。
反射检查器:检查属性和字段。 也可以设置原始值并评估原始方法。
搜索:使用各种过滤器搜索
Unity
Engine.Objects,或将帮助器用于静态实例和类。
C#控制台:具有一些基本帮助程序的交互式控
Il2
Cpp
AssemblyUnhollower
从的输出生成 Managed->
IL2
CPP
代理程序集的工具。
这允许从受管域使用
IL2
CPP
域和其中的对象。 这包括泛型类型和方法、数组和新对象创建。 有些东西可能会被严重破坏。
构建或获取版本
使用获取虚拟程序集
运行AssemblyUnhollower --input=<path> --output=<output> --mscorlib=<path>
生成的程序集可以与您最喜欢的加载程序一起使用,该加载程序在
IL2
CPP
游戏进程中提供
Mono
域,例如 。 这对于
Unity
2018.4.x 游戏似乎运行良好,但需要更广泛的测试。 根据 .NET Core/.NET Framewor
调试模式/控制台用于调试MelonLoader内部。
所有插件都放置在游戏的“安装”文件夹内已创建的“插件”文件夹中。
所有Mod都放置在游戏的Install文件夹内创建的Mods文件夹中。
所有日志均在游戏的“安装”文件夹内创建的日志文件夹中进行。
为了正确使用dnSpy的调试器,请使用“调试模式/控制台”启动选项运行游戏。
自动安装:
确保要安装的游戏已关闭且未运行。
运行MelonLoader.Installer.exe。
单击选择按钮。
在游戏的安装文件夹中选择并打开游戏的EXE。
用于
Unity3D
游戏的.NET
Mono
注入器。 转到。
Microsoft Developer Network for Reference Source,并提供本机C ++ Windows功能/结构/枚举文档。
Unity
Technologies for
Unity
游戏引擎(没有它们,就不会有太多的乐趣)。
罗伯特·吉塞克(Robert Giesecke)拥有出色的编译时库集(UnmanagedExports项目),并使之可以长时间保持最新(13天前更新)。
JämesMénétrey(ZenLulz)和其他在内存编辑库中做出过贡献的人(MemorySharp和Fasm.NET项目)。
JetBrains的高质量Microsoft Visual Studio生产力扩展(ReSharper产品)。
Unity
Injector团队,用于开
一、
JIT
、
AOT
是什么
JIT
,即Just-in-time,动态(即时)编译,边运行边编译;
AOT
,Ahead Of Time,指运行前编译,是两种程序的编译方式
JIT
优点:
①可以根据当前硬件情况实时编译生成最优机器指令(ps.
AOT
也可以做到,在用户使用是使用字节码根据机器情况在做一次编译)
②可以根据当前程序的运行情况生成最优的机器指令序列
③当程序需要支持动态链接时,只能使用
JIT
④可以根据进程中内存的实际情况调整
代码
,使内存能够更充分的利用
JIT
缺点:
①编译需要占用运行时资源
部件ID对应maskrgb的色块表
建筑部件ID去策划表中拿,找到对应的是门部件之类的,再出mask图中有门的抠图,抠图的颜色从上表中ID对应rgb取。调整完后编辑器的色相参数最好归0
shader流程
1.把原rgb色彩空间转hsv色彩空间
2.取不同rgbmask确定部位编号,然后不同部位取不同色相值
http://msdn.microsoft.com/library/z1zx9t92
http://msdn.microsoft.com/en-us/library/ht8ecch6(v=vs.90).aspx
http://www.
mono
-project.com/
AOT
转载于:https://www.cnblogs.com/lilei9110/p/3431688.html...
使用枚举类型的Array的Contains方法,在IOS真机上报错
AOT
,
经查,Contains方法属于System.Linq,但诸如 string[]、int[]等使用均不会有问题,枚举类型直接就真机调试挂了。。估计是使用了动态
代码
。
不使用Contains,直接使用一个for循环做判断。
1.带有增高垫IL的
c#
c#
语言作为一种高级语言,是不能直接在我们的CPU上来直接运行的。
需要编译成IL语言(Intermediate Language)即中间层语言(就是这么高冷)。然后由我们的编译器编译成
底层的语言来到cpu运行。IL是将.NET
代码
转化为机器语言的一个中间语言,因此又把IL语言称之为伪汇编语言。
写
代码
如果要保护
代码
,首先做窗体程序我就不怎么考虑
c#
,但是使用其它编程语言写门槛稍微高一些, 有时候为了写一个免费软件但是又不被别人拿去改成自己的,说真的就不想写了,
c#
和java剽窃
代码
那是从源码级别进行剽窃的,这大大打击了写免费软件和收费软件的动力
现在,有了这个技术 ,再也不怕了
首先需要说明一点的是,winform(.net framework)和.net 的w...
所有StreamingAssets下的文件会被复制到包体。
所有Resource下的资源会被无条件打包。
所有加入到构建中的场景以及他们所引用的所有资源都会进入包体,如场景使用了模型,模型使用了材质,材质使用了shader和贴图,这些资源都被引用了。
其他一些闪...
unity
报错Applications/
Unity
/
Unity
.app/Contents/
il2
cpp
/build/deploy/
il2
cpp
--convert-to-
cpp
--assembly=Library/Bee/artifacts/Android/ManagedStripped/System.Xml.Linq.dll --assembly=Library/Bee/artifacts/Android/ManagedStripped/
Unity
Engine.
Unity
AnalyticsModule.dll
这个报错可能是因为
Unity
在尝试使用
il2
cpp
将
Mono
脚本编译成C++
代码
时出错了。以下是一些可能的解决方案:
1. 检查您的
Unity
项目的Build Settings中是否已经正确配置了Android平台的信息。如果没有,请重新配置。
2. 确认您的
Unity
项目中使用的
Mono
版本与
il2
cpp
所需的
Mono
版本相同。如果版本不同,可能需要更新
Unity
或使用正确的
Mono
版本。
3. 检查您的
Unity
项目中是否存在任何编译错误或警告。如果有,请尝试修复它们并重新编译。
4. 尝试使用
Unity
的
Mono
编译器而不是
il2
cpp
。在Build Settings中将脚本后端设置为
Mono
,然后重新编译您的项目。
如果以上方法无法解决问题,请尝试重新安装
Unity
或联系
Unity
官方支持获取更多帮助。