Skip to content

Commit c1af39c

Browse files
authored
Update README.md
1 parent c259cc5 commit c1af39c

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

README.md

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# PureScript
2-
Unity上的C#热更框架,基于Mono的[MONO_AOT_MODE_INTERP](https://www.mono-project.com/news/2017/11/13/mono-interpreter/)模式。自动绑定Unity的Il2cpp代码。
2+
3+
[![license](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/loongly/PureScript/blob/master/LICENSE)
4+
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/loongly/PureScript/pulls)
5+
6+
7+
一个支持Unity3D的C#热更框架,基于Mono的[MONO_AOT_MODE_INTERP](https://www.mono-project.com/news/2017/11/13/mono-interpreter/)模式。
8+
9+
10+
>支持在iOS平台Assembly.Load
11+
>构建时自动绑定Unity的Il2cpp代码。
12+
>支持大部分Unity特性,包括MonoBehaviour、Coroutine。
13+
>支持配置程序集运行环境(Il2cpp/aot/interp)
14+
>支持`Cocoapods`自动集成
15+
>支持对"magic code"的自定义绑定实现
316
417
-------------------------------------------
518
## iOS平台
@@ -9,11 +22,14 @@ Unity上的C#热更框架,基于Mono的[MONO_AOT_MODE_INTERP](https://www.mono-p
922
使用jit模式运行,可以导出Il2cpp工程,添加ScriptEngine项目断点调试。
1023

1124
## Andrroid平台
12-
请直接使用`Assembly.Load`,同使用PureScript是等效的。
25+
请使用Unity的Mono运行时,可以直接调用`Assembly.Load`,同使用PureScript是等效的,工程结构无需修改
1326

1427
---------------------------------------------------
1528
## 使用
16-
Clone本工程,拷贝DemoProject/Assets/Plugins/PureScript目录
29+
1. Clone本工程,拷贝DemoProject/Assets/Plugins/PureScript目录。
30+
2. 修改 PureScriptBuilder.cs及ScriptEngine/Tools/config.json中的路径配置。
31+
3. config.json中配置运行在interpreter模式的dll(否则以aot运行),以及运行在Il2cpp运行时内的dll(一般用作Adapter)。
32+
1733
+ iOS平台需要安装[Cocoapods](https://cocoapods.org/)[Ninja](https://ninja-build.org/) 。在项目的podfile内添加PureScript引用。
1834
例: */iOS/Podfile-example
1935
然后
@@ -22,7 +38,7 @@ Clone本工程,拷贝DemoProject/Assets/Plugins/PureScript目录
2238

2339

2440

25-
+ Windows平台仅用来调试用,在构建项目后,编译 ScriptEngine/ScriptEngine.vcxproj,替换原来Plugins目录下的的dll,或者导出Il2cpp工程添加ScriptEngine.vcxproj项目调试运行。
41+
+ Windows平台仅用来调试,在构建项目后,编译 ScriptEngine/ScriptEngine.vcxproj,替换原来Plugins目录下的的dll,或者导出Il2cpp的工程添加ScriptEngine.vcxproj项目调试运行。
2642

2743

2844
## 例子
@@ -40,22 +56,25 @@ Clone本工程,拷贝DemoProject/Assets/Plugins/PureScript目录
4056
--------------------------------------------
4157

4258
## 实现
43-
PureScript 附带了Mono运行时,代码生成器,实现了两种绑定方式。两种方式均在构建时自动生成绑定代码,调用方几乎无感知,具体参考DemoProject。
59+
PureScript 封装了Mono运行时,c/csharp代码生成器,pod项目自动集成,实现了两种绑定方式。两种方式均在构建时自动生成绑定代码,调用方几乎无感知,具体参考DemoProject。
4460
两种绑定均支持调用和回调。
4561

4662
* Internal call 绑定:
47-
由c/cpp实现,直接使用Unity的dll,同时把Unity的Internal call重定向到UnityPlayerEngine实现,调用方无需修改。
63+
由c/cpp实现,直接使用Unity的dll,同时把Unity的Internal call绑定到UnityEngine实现,几乎没有性能损失,调用方无需修改。
4864
例:ScriptEngine/generated/icall_binding_gen.c。
49-
如果碰到“Unity magic”代码自动绑定无效,可以实现自己的绑定。
65+
如果碰到“Unity magic”代码自动绑定有问题,可以实现自己的绑定。
5066
例:ScriptEngine/custom/icall_binding.c。
5167
或者在CSharp层用Adapter绑定。
5268

5369

5470
* Adapter绑定:
55-
由纯CSharp实现,具有更好的兼容和灵活性。Mono运行时内的dll调用Il2cpp内的dll时用到,配置需要运行在Il2cpp内又需要在Mono内调用的dll,构建时自动生成绑定代码,调用时自动替换到绑定代码,调用方无需修改。
71+
由纯CSharp实现,分别在Mono端和Il2cpp端生成绑定代码,具有更好的兼容和灵活性。Mono运行时内的dll调用Il2cpp内的dll时用到,在config.json中配置需要运行在Il2cpp内又需要在Mono内调用的dll,构建时自动生成绑定代码,在aot执行,调用时自动替换到绑定代码,调用方无需修改。
5672
例:DemoProject/*/AdapterTest
5773

5874
----------------------------------
5975

76+
正式项目请将Mono库(mono*.dll/mono*.a) 替换为自己[编译](https://github.com/mono/mono/tree/master/sdks)的。
77+
6078
如果大家对这个方案有兴趣再补充详细文档,同时欢迎提交PR或者Star。
6179

80+
有问题请联系 [email protected]

0 commit comments

Comments
 (0)