Tencent/puerts

[Unity]考虑将Plugin API简化

Opened this issue · 0 comments

detail | 详细描述

目前值传递有多套接口,可以考虑简化。
从c#到js传递的接口有:
1、函数、属性返回
ReturnXXX
2、(函数)ref数据返回
SetXXXToOutValue
3、js函数参数设置
PushXXXForJSFunction
从js到c#传递的有:
1、从v8::Value获取值
GetXXXFromValue
2、从js函数调用结果获取值
GetXXXFromResult

最初因为对v8的handle回收机制不够熟悉,没把握一个不被Local<T>管理的value指针是否会有问题,但了解v8的实现后,Local<T>只是指针的简单包装(node js的napi也依赖这点),以上接口可以考虑统一成v8::Value和C#的转换,加上一个Push或者Get接口。

好处是便于扩展,比如对JSObject的支持,适配新脚本后端更简单(比如jscore)。
不好的是目前backend_quickjs因为不满足“Local<T>只是指针的简单包装”可能用不了。

另外的思路是考虑用pesapi来实现。