• JSBinding+Bridge.NET限制


    限制:

    • 框架代码不可以访问逻辑代码。这是最基本的。
    • 框架里的函数 f 带数组参数时,逻辑代码调用 f 的话,数组只能做为输入,也就是说,如果在框架函数 f 里修改了数组的内容,那么逻辑代码是无法取得新内容的。这是为了性能考虑。
    • js<->cs 交互时,数组只支持一维
    • 纯逻辑对象不可以传递到框架代码中。例如 List<> 对象。
    • 反射相关代码,部分支持。具体看你咋用,有时候是可以的,Bridge 在 Js 模拟了一套类型系统。可以看编译成 Js 时有没有报错,如果没报错,应该就可以的,但是只能是对逻辑代码里的类型使用。
    • 支持协程,但是需要自己推动协程
    void Update() {
        this.UpdateCoroutines();
    }
    • 不支持 yield break。以后也不会支持,因为 Js 中没有对应的语法。
    • yield return 后接的对象类型有限制,支持的有(详细细节可查看UnityProjJsAssetsStreamingAssetsJavaScriptManualUnityEngine_MonoBehaviour.javascript):
    yield return new WaitForSeconds(...);
    yield www;
    yield return AsyncOperation(...)
    yield return 另一协程,例如 StartCoroutine(...);
    yield return null;
    yield return 0;
    • 逻辑代码不可以继承框架代码,不可以直接调用框架代码的 Delegate。因此如果是现有项目要改造,首先要做的就是划清逻辑和框架的界限。
    • 在逻辑代码中操作 byte[] 极有可能会错,应尽可能避免,最好不要操作。

     

    关于泛型

    首先,在逻辑代码中,最优先使用Bridge自带的泛型类。什么是Bridge自带?就是你可以不导出,直接在Bridge工程中使用的类。ClientJs/Assets/Scripts/JSBinding/Editor/BridgeType.txt 里有所有 Bridge 自带的类。

    列举几个常见的:List<>,Dictionary<,>,DateTime。

     

    如果要用到某个泛型类,但是Bridge没有,怎么办?首先,导出框架代码的泛型类是支持的。但是,使用导出的泛型类性能极差,因为每个调用都是反射。如果是偶尔使用,可以接受。如果是频繁使用,则不推荐。比如说容器内一般使用频率很高,则不推荐导出,比如Queue<>,HashSet<>。建议是,自己实现。比如说自己写一个MyQueue,里面包一个List。这样MyQueue是纯逻辑代码,性能好。

     

     

    返回主页:JSBinding+Bridge.NET:Unity游戏热更新方案

  • 相关阅读:
    Android的webview的设置参数
    禁止RecycleView滑动
    Volley加载不出图片的问题
    LIstview滑动时不加载图片,停止时加载!
    【原创】设计模式开篇—面向对象的软件设计
    [原创]写给自己的总结—2014到2015
    【原创】开车分四个阶段的话,你属于哪个
    【原创】亲身经历的几次合同陷阱
    【转】程序员需谨记的8条团队开发原则
    【转】绩效考核的10大误区
  • 原文地址:https://www.cnblogs.com/answerwinner/p/6053913.html
Copyright © 2020-2023  润新知