我使用的 unity 热更新方案 JSB(求小编 推荐一下)

今天周五 ,明天没有什么事情,可以安心写一些博客。

今天聊 两个话题

一 , unity热更新的窘境

二 ,我所使用的unity 热更新方案JSB

======================================热更新的窘境=============================================

(1)其实unity 热更新到瓶颈是 ios 的 系统本身 ,禁止你 jit 。说白了,内存中代码,系统本身不让你执行。

安卓 系统,桌面 系统,本身都支持 动态直接替换dll, 热更新方案 相对较多 一些,我这就不一一列举啦。

我自己觉得,在ios 跑不起来的热更新方案 ,都是不过关的热更新方案,(不服你来打我啊).

===========================  lua============================

现在国内比较流行的 unity  更新方案是lua(ulua http://www.ulua.org/ 和slua http://www.slua.net/), 为什么我只说这两个呢,以为 其他的lua 解决方案,比如

unilua (https://github.com/xebecnan/UniLua 云峰大神的c# 实现) ,效率 上比不上 前面两个(执行引擎用c# 来写,你觉得会快过c 写的吗?况且前面两位都是静态绑定,可以完全没有反射,效率不言而喻)目之所及 是在逐渐的淡出;另外 还有 moon http://www.moonsharp.org/也是 c#的lua 实现,效率 问题令人堪忧(不过作者 很有爱,我很喜欢)。

================================L#=============================

说到 热更新,你还不能不提起 李总的 L# ,真的是奇思妙想的 杰作,(L# 的第一个版本,李总 http://www.cnblogs.com/crazylights 也就用了2天就完成了,大神就是大神),L# 直接内置 c# 版本 dll 的虚拟机。但是有些问题 还靠反射,这在ios 的il2cpp 的 有各种各样的风险。而且效率本身受到 c# 本身语言的限制,是有瓶颈的。我坦然的说 L# 没有ulua 和slua快(不服照样来打我)

==================================JSB=======================

(2)最后,我开始介绍我使用JSB,这里是JSB作者的博客 http://www.cnblogs.com/answerwinner/p/4469021.html。它的骨架是 你离线的 c# 代码,通过sharpkit(一个c# 转js的工具),转成js 脚本,这些js 脚本中 ,会绑定一些你的unity的内部类,然后把这些脚本放到 spidermokey  里面执行,总体来说,你完全可以只写c# 就可以完全离线更新逻辑。我说一下我为什么要选择 JSB

原因一,我不想精通第二门语言。我们做游戏客户端的需要懂得东西很多,你搞unity ,熟悉c# 就可以啦,如果你还要把精力放在 学习lua 和 js 上面的话,你把两门语言都用熟的时间,为什么不用来学习 3d 图形学,渲染,shader呢,我的精力是有限的,我不是超人。我不想精通第二们语言( 其实,我本人 java oc lua js  php 一般简单的代码是没有问题的,也对一些新兴起来的语言比如 rust go 等  怀有很高的兴趣),只是说 术业有专攻而已

原因二,效率问题。坦率的讲,JSB 没有lua快,我觉的lua 天生就是做嵌入式脚本的命, 但是spidermonkey的 效率 以为足以支撑 客户端啦 ,(0.1ms 比 0.2ms 快,嗯 是的,但是用户感觉不出来),而且 JSB 的整套解决方案中 ,压根不存在反射,完全的静态绑定 unity 内部类,所以说,效率问题你放心,原理和 cocos-js 是一样的。

================================================= 结语 =======================================

我前一个项目用的是lua,我写起来很蹩脚,我觉得写大型项目 c# ,比lua 要好一点,纯个人见解。我现在用的是JSB,开发效率很高,我一位新同事,c# 学了一两个月,写热更新代码,无压力。这就是我的亲身实践,也欢迎你了解jsb ,使用jsb

qq 群:189738580。我们等你奥

时间: 2024-10-13 08:05:06

我使用的 unity 热更新方案 JSB(求小编 推荐一下)的相关文章

Unity热更新方案(uLua vs sLua)

首先附上这两个项目的地址,这两个项目都是比较完善的lua解决方案,从效率和使用方式上说都不相伯仲,我最终选择了ulua,但是并不是说其具有压倒性优势. uLua:http://ulua.org/index.html sLua:https://github.com/pangweiwei/slua 引入lua,基本上就是为了热更新,不过后面苹果似乎对lua脚本的热更新也限制的很严格,拿脚本做热更新也要偷偷摸摸的去做.所以说我一贯的观点是游戏框架设计的合理些(比如技能.界面中可以用配置的,尽量不要硬编

unity 热更新 c# 实战经验分享(二) - 动态Protobuff协议,再也不用担心为了换条协议换包了 ~~!

先提前说明一下,如果哪位小伙伴 觉得生疏的话,可以看这篇博客的前面两个博客,里面讲述了 高大上 JSB,unity 热更新方案,用强大的宇宙第一编辑器vs 来开发 unity 热观更新脚本,更新c# 不在是梦 这次的demo 工程我已经长传了,地址 在这里http://pan.baidu.com/s/1qWQlXUW:下载后(放在D盘 放在D盘 放在D盘!!!!)里面的unity 工程直接打开然后运行main 场景 .就会出现下图,这篇博客唯一 的意义就在于这个demo,实战就是实战不跟你讲废话

Unity官方公布热更新方案性能对比

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  如何在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对比 什么是热更新 ? 广义定义 ? 无需关闭服务器,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码重新打包提交至AppStore,即可更新客户端的执行代码,即

Unity官方发布热更新方案性能对照

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  怎样在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对照 什么是热更新 ? 广义定义 ? 无需关闭server,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码又一次打包提交至AppStore,就可以更新clien

C#最良心脚本语言C#Light/Evil,Xamarin\WP8\Unity热更新最良心方案,再次进化.

C#Light的定位是嵌入式脚本语言,一段C#Light脚本是一个函数 C#Evil定位为书写项目的脚本语言,多脚本文件合作,可以完全用脚本承载项目. C#Light/Evil 使用完全C#一致性语法 目前 C#Light已经是正式版,且经商业项目检验 C#Evil是Alpha版,欢迎试用反馈. C#Evil在C#Light的基础上 从底层支持了面向对象,请注意下面是脚本代码 不同于C#Light没有函数和类的设计,(C#Light只是用C#LightFramework来模拟整个cs文件的识别,

unity 热更新思路和实现

声明:本文介绍的热更新方案是我在网上搜索到的,然后自己修改了一下,相当于是借鉴了别人的思路,加工成了自己的,在此感谢无私分享经验的朋友们. 想要使用热更新技术,需要规划设计好资源比较策略,资源版本,确保增加新资源后可以下载到本地,有资源更新的时候可以替换掉本地旧资源.我在前面写了一篇"unity 打包AssetBundle"的文章,里面生成了一个资源版本文件,不多解释了,上图.至于怎么生成这个文件的,可以看一下我前面写的文章. 废话不多说. 先介绍热更新步骤,后上代码 步骤一.在Res

unity3d的资源管理和热更新方案

之前开发一直使用cocos2dx,最近开始搭建unity3d的框架,遇到的一个大问题就是热更新.虽然代码采用了slua脚本,unity3d官方也提供了assetbundle这样的解决方案,但是还是有好多的问题需要解决. 1.复杂的资源引用方案.cococ2dx的更新方案很简单--添加附加searchpath,这样只要设置更新文件所在的路径,就能保证优先使用最新资源.但是unity3d并不是这样,因为它没有cocos2dx的FileUtils,没办法控制所有资源的加载.unity3d的资源来源有这

Unity3D热更新方案网摘总结

参考:http://blog.csdn.net/guofeng526/article/details/52662994 http://blog.csdn.net/u010019717/article/details/50853207 "热更新"这个词,在Unity3D的应用下,是有些语义错误的,但是作为大家都熟知的一项技术,我们姑且这么叫它,相信很长时间内,大家依然还会这么叫,甚至有人叫它"暖更新". 一.什么是热更新? 广义定义 无需关闭服务器,不停机状态下修复漏

移动端热更新方案(iOS+Android)

PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5%88%86%E4%BA%ABPPT.pptx 一 .热更新(热修复)产品背景 这里谈到的热更新都是指APP(不包含网页).APP按大类别可以粗略分为 应用 和 游戏.APP的开发周期是极其快速的,在实际开发流程中,我们总会有一些需求迫使我们短时间内快速上线,比如需求流程出错,程序员主观导致的一些bu